17
$ perl --version
This is perl, v5.10.1 (*) built for x86_64-linux-gnu-thread-multi

$ echo -e "foo\nbar" > baz.txt
$ perl -p -e 's/foo\nbar/FOO\nBAR/m' baz.txt
foo
bar

この代替品を機能させるにはどうすればよいですか?

4

2 に答える 2

5

それには-pスイッチが関係しています。一度に 1 行ずつ入力を読み取ります。したがって、2 つの行の間の改行に対して正規表現を実行することはできません。一致することはないからです。できることの 1 つは、すべての入力変更変数を読み取り、$/それに正規表現を適用することです。一方通行:

perl -e 'undef $/; $s = <>; $s =~ s/foo\nbar/FOO\nBAR/; print $s' baz.txt

次の結果が得られます。

FOO
BAR
于 2013-05-24T19:49:36.313 に答える