※ 引述《thisgo (寻梦园)》之铭言:
: file.txt
: AAAAA
: BBBBB
: CCCCC
: DDDDD
: EEEEE
: FFFFF
: 想改成 找到CCCCC之后的三行 前面加上@
: 如
: AAAAA
: BBBBB
: @CCCCC
: @DDDDD
: @EEEEE
: FFFFF
如果不限定非用 sed 不可,可以用 perl 当成伪 sed
因为 Perl 本身即是完整的程式语言,处理起来反而比较简单
参考以下指令(因较长,拆成三行)
$ perl -p -e 'if (/CCCCC/) { $flag = 1; }'\
'if ($flag > 0) { s/(.+)/@\1/; $flag++; }'\
'if ($flag > 3) { $flag = 0; }' file.txt
如果结果符合自己的需要,就加上 -i 参数就可以修改 file.txt