-1

2 つの行の間の文字列を置き換える必要があります。例えば:

"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でもawkOKです。

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 に答える