通过命令行删除重复的电子邮件?

时间:2013-04-12 08:17:17

标签: shell command-line command

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

emails.txt - 订阅我的简报的人 blacklist.txt - 取消订阅的人

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

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

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您可以使用grep

grep -vwF -f blacklist.txt emails.txt

它只会显示emails.txt中不在blacklist.txt中的行。

  • grep -v反转了找到的结果。
  • grep -f获取一个文件作为比较模式
  • grep -w比较完整的字词
  • grep -F匹配完整字符串

答案 1 :(得分:1)

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

awk也可以这样做:

awk 'NR==FNR{a[$0]++;next}!a[$0]' black.txt email.txt