文字列リストがあり、この文字列を含むファイルから行を見つけて削除したいと思います。文字列リストの簡単な例を以下に示します。
ファイル
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_S
。file_A
-v
一致しない行が渡されるように一致の意味を変更し、文字列を次のように処理するように指示-F
します。grep
固定文字列正規表現ではなく。
答え3
awk -F "|" '{if($1 != "1Mo") if($1 != "2Mo" ) { print $0;}}' inputFile > OutputFile