我需要在两行之间替换一个字符串。例如:
"aaa\nfoo\nfoo\naaa\nfoo\nbbb\nfoo\nbbb"
==>"aaa\nfoo\nfoo\naaa\nright\nbbb\nfoo\nbbb"
我想像以下格式一样使用 perl 但失败了:
echo -e "aaa\nfoo\nfoo\naaa\nfoo\nbbb\nfoo\nbbb" | perl -pe "code here"
那么有没有什么好的方法来处理呢?
两者都perl
可以awk
。
珀尔:
echo -e "aaa\nfoo\nfoo\naaa\nfoo\nbbb\nfoo\nbbb" | perl -p00e 's/aaa\nfoo\nbbb/aaa\nright\nbbb/'
如果需要匹配模式多行,则必须更改记录分隔符。标志 m 和 s 也很有用。
也可以看看
perl --help # -0
perldoc perlvar # $/
perldoc perlre # /Modifiers
perl -MO=Deparse -p00e 's/aaa\nfoo\nbbb/aaa\nright\nbbb/'
呸:
echo -e "aaa\nfoo\nfoo\naaa\nfoo\nbbb\nfoo\nbbb" | awk 'BEGIN{RS=""}{sub(/aaa\nfoo\nbbb/,"aaa\nright\nbbb",$0);print}'