我有以下情况:
的Source.txt
ID1:email1@domain1.com
ID2:email2@domain2.com
ID3:email3@domain3.com
...
ID是数字字符串,例如1234
,23412
,897
...(一个或多个数字)。
exclude.txt
emailX@domainX.com
emailY@domainY.com
emailZ@domainZ.com
...
即。只有电子邮件,没有ID。
我想删除 source.txt 中包含 exclude.txt 中列出的电子邮件的所有行,同时保留非ID:email
对的行除去。
如何使用linux命令行工具(如果需要,还是简单的bash脚本)?
答案 0 :(得分:2)
您可以使用awk轻松完成:
awk -F":" 'NR==FNR{a[$1];next}(!($2 in a))' exclude.txt source.txt
替代grep:
grep -v -F -f exclude.txt source.txt
小心使用grep,因为grep执行正则表达式匹配。您可能还需要将-w选项添加到grep(单词匹配)