可能的重复:
将文件视为集合并对其执行集合操作的 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