我有一个包含多条记录的文件。我必须将那些在特定位置(例如位置 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 个字符)。