複数のパターンを含むファイルから行を検索および削除する

複数のパターンを含むファイルから行を検索および削除する

文字列リストがあり、この文字列を含むファイルから行を見つけて削除したいと思います。文字列リストの簡単な例を以下に示します。

ファイル

1月 32,33
2月 7,26
2月 7,27
2月 7,28

このファイルの簡単な例は次のとおりです。

ファイルA

1月32,33が大好きです。
2Mo 7,26 好きです。
こんにちは1,2はあまり面白くありません。
Ab 3,4 私は愚かです。

私の予想結果は次のとおりです。

こんにちは1,2はあまり面白くありません。
Ab 3,4 私は愚かです。

次のコマンドを試しましたが、残念ながら失敗しました。

grep -f fileS fileA|awk '{print $0}'

関連する質問を見つけましたが、ほとんどが特定のパターンを持つ行を削除することに焦点を当てます。この問題を解決する方法を知っている人はいますか?ありがとうございます。

答え1

AWKコードは次のとおりです。

NR == FNR {
    line[$0]++;
    next;
}
!line[$1" "$2]

一行で:

awk 'NR == FNR {line[$0]++; next;} !line[$1" "$2]' file_S file_A

答え2

$ grep -vF -f file_S file_A
Hi 1,2  This is not so fun.
Ab 3,4  I am stupid.

これは文字列を使用して、これらの文字列を含まない行を取得しますfile_Sfile_A

-v一致しない行が渡されるように一致の意味を変更し、文字列を次のように処理するように指示-Fします。grep固定文字列正規表現ではなく。

答え3

awk -F "|" '{if($1 != "1Mo") if($1 != "2Mo" ) { print $0;}}' inputFile > OutputFile

関連情報