-1

我需要在两行之间替换一个字符串。例如:

"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

4

1 回答 1

4

珀尔:

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}'
于 2012-08-20T07:18:12.030 回答