0

我在文本文件中有两个电子邮件列表:

emails.txt - 订阅我的时事通讯的人 blacklist.txt - 取消订阅的人

我现在正在更改时事通讯软件。显然,我不想给决定退订的人发电子邮件。有没有办法通过命令行检查 blacklist.txt 中列出的任何电子邮件当前是否在我的 emails.txt 文件中,以及是否要删除它们?

注意:所有电子邮件都在单独的行上。我知道如何通过使用sortand删除重复项,uniq但这仍然至少将其中一个留在文件中。我需要将 blacklist.txt 中包含的电子邮件从 emails.txt 中删除,并将清理后的电子邮件列表输出到 clean.txt

在此先感谢您的帮助!

4

2 回答 2

1

grep -v(with -F and -w) 是一种方法。你仍然可以尝试comm..

awk可以这样做:

awk 'NR==FNR{a[$0]++;next}!a[$0]' black.txt email.txt
于 2013-04-12T08:26:47.047 回答
1

您可以grep为此使用:

grep -vwF -f blacklist.txt emails.txt

它只会显示 emails.txt不在blacklist.txt.

  • grep -v反转找到的结果。
  • grep -f获取一个文件作为要比较的模式
  • grep -w比较完整的单词
  • grep -F匹配精确字符串
于 2013-04-12T08:18:47.533 回答