次のファイルがあります。
...
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
モードに切り替えてファイル全体を読み込みます。次に、コマンドを置き換えて必要に応じて変更します。