各行のパターンが一致した場合、連続行を削除します。

各行のパターンが一致した場合、連続行を削除します。

さようなら

このパターンが見つかったら、連続した行を削除する方法を知りたいです。/^pt [a-z]\npy [0-9][0-9][0-9][0-9]\n//

予想入力

pt a
py 01234
pt b
cd abc
py 5678

期待される出力

pt b
cd abc
py 5678

どんな手がかりもよろしくお願いします。

答え1

これは働きます:

sed '/^pt [a-z]/{N;/py [0-9][0-9][0-9][0-9]/d}' your_file

拡大する

  • 現在の行が一致する場合、中/^pt [a-z]/かっこの間の内容を実行します。
  • Nアクティブバッファに次の行を追加します。
  • アクティブバッファが一致すると、/py [0-9][0-9][0-9][0-9]/アクティブバッファの内容を削除(つまり印刷しない)します。これはを通じて達成されますd

答え2

パールを通して、

$ perl -00pe 's/^pt [a-z]\npy [0-9]{5}\n//' file
pt b
cd abc
py 5678

関連情報