さようなら
このパターンが見つかったら、連続した行を削除する方法を知りたいです。/^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