テキストファイルの1行を置き換えますが、その行の前に特定の複数行パターンがある場合にのみ適用されます。

テキストファイルの1行を置き換えますが、その行の前に特定の複数行パターンがある場合にのみ適用されます。

私のファイルには以下が含まれます。

パイナップル
りんご
バナナ
ブドウ
スイカ
オレンジ
りんご
バナナ
マンゴー
プラム
バナナ

私はこれを次のようにしたいと思います:

パイナップル
りんご
バナナ
ブドウ
スイカ
オレンジ
りんご
バナナ
オリーブ
マンゴー
プラム
バナナ

ここでは「Rice」を「Olive」に変更します。ただし、「Rice」が複数行パターンに従う場合にのみ、特に「Rice」が複数行パターンの後に表示される場合にのみ該当します。

オレンジ
りんご
バナナ

awk、、、またはその他perlsedツールを使用する意思があります。

ベストアンサー1

Perlはこれをとてもよく行います。

perl -0pe 's/Orange\nApple\nBanana\n\KRice/Olive/' input.txt

正規表現を練習してテストできます。正規表現 101

おすすめ記事