我在文本文件中有两个电子邮件列表:
emails.txt - 订阅我的简报的人 blacklist.txt - 取消订阅的人
我正在改变通讯软件。显然,我不想给已经决定取消订阅的人发送电子邮件。有没有办法通过命令行来检查blacklist.txt中列出的任何电子邮件当前是否在我的emails.txt文件中以及是否要删除它们?
注意:所有电子邮件都在单独的行中。我知道如何使用sort
和uniq
删除重复项,但仍然会在文件中留下至少一个重复项。我需要将blacklist.txt中包含的电子邮件从emails.txt中删除,并将已清理的电子邮件列表输出到clean.txt
提前感谢您的帮助!
答案 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