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

vic*_*vic 5 text-processing

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

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

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

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

文件1:

test@invalid.com
test2@invalid.com
test3@invalid.com
Run Code Online (Sandbox Code Playgroud)

文件2:

23456|tom|jones|test@goodemailcom|10
12345|pete|best|pete@goodemail.com|10
87569|remove3|me3|test3@invalid.com|10
23098|mike|jones|mike@goodemailcom|10
10985|al|best|al@goodemail.com|10
09865|removve|me|test@invalid.com|10
13579|remove2|me2|test2@invalid.com|10
Run Code Online (Sandbox Code Playgroud)

欣赏任何人拥有的任何知识。

Bru*_*ger 9

您可以fgrep为此使用:

fgrep -v -f file1  file2  > unique_addresses
Run Code Online (Sandbox Code Playgroud)

如果您在两个文件中每行都有 1 个电子邮件地址,则此任务会容易得多。

传统上fgrep作为一个单独的程序存在,但在 GNU 实用程序中,grep -F做同样的事情。