Perlを使用して複数行式を変更する

Perlを使用して複数行式を変更する

次のファイルがあります。

...

CNN
111
XXX

ABC
111
XXX

ABC
111
BBC

...

111 を 999 に変更する必要がありますが、ABC\n111\nXXX の一部としてのみ変更する必要があります。

...

CNN
111
XXX

ABC
999
XXX

ABC
111
BBC

...

私はこれを試しましたが、どこでも「111」に変わります。

perl -i -pe '/ABC\n111\nXXX/ if s/111/999/g' FILE

注:「111」はさまざまな場所に表示される可能性があるため、複数行を比較する必要があります。ファイルサイズは227kbです。

答え1

perl -0777 -i -p -e 's/ABC\n111\nXXX/ABC\n999\nXXX/g;' file

-0777 Perlをslurpモードに切り替えてファイル全体を読み込みます。次に、コマンドを置き換えて必要に応じて変更します。

関連情報