我有两个带有电子邮件地址的文件(每行一个):file1 和 file2。
如何删除 file1 中也存在于 file2 中的所有电子邮件?寻找 bash 答案,但任何其他脚本语言也可以。
如果有帮助,每个文件中只有唯一的电子邮件地址。
join -v1 <(sort file1) <(sort file2)
这告诉join
打印 file1 中未出现在 file2 中的行(电子邮件)。它们必须被排序,从哪里得到<(sort ...)
.
如果您出于某种原因必须保留订单,并且希望通过考虑区分大小写和回车(^M)而过于复杂,您可以尝试:
perl -e '%e=();while(<>){s/[\r\n]//g;$e{lc($_)}=1}open($so,"<","file1");while(<$so>){s/[\r\n]//g;print "$_\n" if(!exists($e{lc($_)}))}close($so)' file2