根据条件将记录复制到另一个文件中

根据条件将记录复制到另一个文件中

我有一个包含多条记录的文件。我必须将那些在特定位置(例如位置 19 和 20)具有代码“06”的记录复制到另一个文件中。记录之间没有任何空格。如何使用 shell 脚本实现此目的?

答案1

如果“位置 19 和 20”指的是该行的字符 19 和 20 等于“06”,则可以通过多种方式执行此操作:

使用grep

grep -E '^.{18}06' your_file > new_file

这会查找行首之后有 18 个字符的行,后跟两个字符06


使用Bash:

while IFS= read -r line; do
    code="${line:18:2}"
    [ "$code" == 06 ] && printf "%s\n" "$line"
done < your_file > new_file

与上面类似,但在 Perl 中:

perl -ne 'print if substr($_,18,2) eq "06"' your_file > new_file

在 Bash 和 Perl 中,字符串的第一个位置都是位置 0,因此在此方案中字符 19 和 20 位于位置 18 和 19(从位置 18 开始读取 2 个字符)。

相关内容