我收到了一份一次性电子邮件和我的公司不希望出现在我们的邮件列表中的其他电子邮件的列表,并要求将其删除。我知道grep -v
,awk !/xxx/'
但这是针对他们不想要的 1000 个电子邮件域的列表。我可以使用 bash 脚本,但它们一次只能排序一个,仍然需要手动排序。欢迎任何想法
答案1
如果我理解正确的话,你有一个邮件列表文件。
$ cat mail_list
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
您有一个黑名单文件。
$ cat blacklist
[email protected]
[email protected]
您想创建一个新的邮件列表文件并删除黑名单中的电子邮件地址吗?
使用黑名单文件grep
:
-f 文件,--file=文件
从文件中读取一个或多个换行符分隔的模式。空模式行与每个输入行匹配。换行符不被视为模式的一部分。如果文件为空,则没有任何内容匹配。
$ grep -vxFf blacklist mail_list
[email protected]
[email protected]
[email protected]
要创建新的邮件列表,您可以将其重定向到文件中,例如:
$ grep -vxFf blacklist mail_list > new_mail_list
然后您可以用它来覆盖旧的邮件列表
$ mv new_mail_list mail_list