从文件中删除另一个文件中存在匹配文本(不是整行)的行的最佳方法

从文件中删除另一个文件中存在匹配文本(不是整行)的行的最佳方法

我有一个电子邮件地址文件(文件 1)和另一个包含其中一些电子邮件地址的数据行文件(文件 2)

我想比较文件并删除文件 2 中与文件 1 中具有匹配电子邮件的所有行。

我知道我可以做一个循环并使用sed -i 或循环并将每一行 grep 到一个新文件,然后将文件与 COMM 进行比较

但我想知道是否有一种比较方法,我可以将 file1 中的所有行 grep 到 file2 中,而只保留 file2 中不包含文件 1 中任何电子邮件的行

文件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做同样的事情。

相关内容