私は2つの特定の連続した文字列のすべてのインスタンスを置き換えるPerlの1行のコードを書くのが好きです。
john paul
たとえば、2つの文字列がおよびで、george
この文字列の連続したインスタンスをその順序で置き換えたいとしますpete
。 1行のコード実行
$ cat ~/foo
john paulgeorge
john paul george
john paul
george
george john paul
結果が出なければならない
$ cat ~/foo
pete
pete
pete
george john paul
私の心に浮かぶ唯一のこと
$ perl -p -i -e 's/john paul\s*george/pete/g' ~/foo
しかし、これによって
$ cat ~/foo
pete
pete
john paul
george
george john paul
私の回線の1つを変更する方法はありますか?
ベストアンサー1
1行のコードに追加する唯一のことは、ファイルを単一の文字列として読み取るオプションです。
perl -0777 -p -i -e 's/john paul\s*george/pete/g' ~/foo
# ^^^^^