awk を使用して、2 つの連続する行を一致するパターンと比較し、最初の一致行を削除します。

awk を使用して、2 つの連続する行を一致するパターンと比較し、最初の一致行を削除します。

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

apple 1
apple 2
mango 3
apple 2
mango 4
mango 5
apple 3
apple 4
cherry 6
cherry 7
cherry 8
apple 5
cherry 9

apple1行にawkまたはsedを使用して2行目を保持するパターンに一致する連続行を削除したいと思います。また、パターンと一致しない残りの行を維持し、次のような出力を取得したいと思います。

apple 2
mango 3
apple 2
mango 4
mango 5
apple 4
cherry 6
cherry 7
cherry 8
apple 5
cherry 9

ベストアンサー1

awkスクリプトの追加最適化:

awk '$1=="apple"{l=$0;next}l{print l; l=""}1' file 

これはl、パターンに一致する行を変数に保存することに依存しますapple。保存された行は、パターンが見つからない場合にのみ印刷されます。

おすすめ記事