リストから複数のパターンに一致する文字列を削除する

リストから複数のパターンに一致する文字列を削除する

次の行を含むファイルがあります。

1
apple
2
orange
3
banana
4
mango
5
coconut

パターンのリストがあります。

1
3
5

次のようにするために、パターンリストを使用してこの行(およびそれ以降の行)を削除したいと思います。

2
orange
4
mango

1つのコマンドで毎日手動で入力できないパターンが多いため、リストを使用する必要があります。

ベストアンサー1

sed+生地解決策:

sed -E "/\<(`paste -s -d'|' patterns`)\>/{N;d;}" file

出力:

2
orange
4
mango

  • paste -s -d'|' patterns- 正規表現シフトグループを取得するために区切り文字patternsとして使用されるファイル行を結合します。|(1|3|5)

  • N- パターン空間に次の行を追加します。

  • d- パターン空間の行削除

おすすめ記事