一致するテキスト(全行ではない)が別のファイル内のファイルから行を削除する最善の方法

一致するテキスト(全行ではない)が別のファイル内のファイルから行を削除する最善の方法

電子メールアドレスファイル(ファイル1)とその電子メールアドレスの一部を含む他のデータラインファイル(ファイル2)があります。

ファイルを比較し、ファイル1の電子メールと一致するファイル2のすべての行を削除したいと思います。

私はループを実行し、各行をsed -i 新しいファイルとして使用するか、ループしてgrepしてから、ファイルをCOMMと比較できることを知っています。

しかし、file1のすべての行をfile2にgrepし、file1の電子メールを含まないfile2の行だけを保持できる比較方法があるかどうかを知りたいです。

ファイル1:

[email protected]
[email protected]
[email protected]

ファイル2:

23456|tom|jones|test@goodemailcom|10
12345|pete|best|[email protected]|10
87569|remove3|me3|[email protected]|10
23098|mike|jones|mike@goodemailcom|10
10985|al|best|[email protected]|10
09865|removve|me|[email protected]|10
13579|remove2|me2|[email protected]|10

誰もが持っている知識を高く評価します。

答え1

次の目的で使用できますfgrep

fgrep -v -f file1  file2  > unique_addresses

両方のファイルの各行に電子メールアドレスがある場合、これははるかに簡単です。

伝統的にfgrep別々のプログラムとして存在しますが、GNUユーティリティはgrep -F同じことを行います。

関連情報