如何使用 BASH 比较两个文本文件以获得完全相同的文本



假设我有两个文本文件需要从中提取数据。两个文件的文本如下:

文件 1:

1name - randomemail@email.com
2Name - superrandomemail@email.com
3Name - 123random@email.com
4Name - random123@email.com

文件 2:

email.com
email.com
email.com
anotherwebsite.com

文件 2 是从电子邮件地址中提取的文件 1 的域名列表。这些域名无论如何都不是相同的域名,并且非常随机。

如何从文件 1 中获取与文件 2 匹配的域名的结果?

提前谢谢你!

假设顺序无关紧要,

grep -F -f FILE2 FILE1

应该做这个伎俩。 (这是因为一个鲜为人知的事实:grep -F选项不仅意味着"匹配这个固定字符串",还意味着"匹配任何这些换行符分隔的固定字符串"。

食谱:

join <(sed 's/^.*@//' file1|sort -u) <(sort -u file2) 

它将输出文件1和文件2中所有域名的交集

请参阅 BashFAQ/036 了解此类问题的常用解决方案列表。

使用 VimDIFF 命令,这很好地展示了差异

如果我猜对了,您希望过滤文件 2 中提到的主机的所有地址。

然后你可以循环遍历File 2和 grep 进行@<line>,将结果累积到新文件或类似的东西中。

例:

cat file2 | sort -u | while read host; do grep "@$host" file1; done > filtered

相关内容

  • 没有找到相关文章

最新更新