列出两个纯数据集之间的差异和重叠

列出两个纯数据集之间的差异和重叠

可能的重复:
将文件视为集合并对其执行集合操作的 Linux 工具

我有两个数据集,A 和 B。每个数据集的格式是每行一个数字。例如,

12345
23456
67891
2345900
12345

A中的一些数据不包含在数据集B中。如何列出A中的所有这些数据,以及如何列出A和B共享的所有数据。如何使用Linux/UNIX命令来做到这一点?

答案1

使用comm命令。

如果您列出的是文件listA并且listB

comm listA listB

默认情况下,comm 将返回 3 列。仅在 listA 中的项目、仅在 listB 中的项目以及两个列表共有的项目。

您可以使用 、 或 arg 抑制-1单个-2-3

答案2

这将为您提供 A 中存在但 B 中不存在的独特项目:

cat A|perl -ne '$z=$_;chomp($z);$y=`grep $z B`;if ($y== "") {print "\n$z";}'|sort -u

这将为您提供 A 和 B 中常见项目的列表:

cat A |xargs -i grep {} B|sort -u

相关内容