与 Bash 中的另一个文件相比,仅打印文件独有的内容

与 Bash 中的另一个文件相比,仅打印文件独有的内容

今天是个好日子,

我知道很多类似的问题已经得到解答,但我找不到令人满意的答案,这让我很抓狂。

我有两个文件,它们都包含主机名:一个包含所有向互联网开放的文件,另一个记录我们所有主机的所有扫描结果,无论是否向互联网开放。

文件A(1111.com、1112.com、www.1113.com、1114.com)

文件B(1111.com、1199.com、1299.com、www2.1329.com)

我的目标是打印一个仅打印主机的文件在文件 B 中。我尝试了 diff 和 comm,但无法对文件进行预排序,因为条目有时有点不同。

有没有人有办法解决吗 ?

答案1

无法对文件进行预排序不是问题:

comm -13 <(sort fileA) <(sort fileB)

这给出了

1199.com
1299.com
www2.1329.com

根据您的示例,假设每个主机位于单独的线路上。-13指示comm删除第 1 列(第一个文件特有的行)和第 3 列(两个文件共有的行),只留下第二个文件特有的行。

相关内容