Linux
列出兩個普通數據集之間的差異和重疊
可能重複:
我有兩個數據集,A 和 B。每個數據集的格式是每行一個數字。例如,
12345 23456 67891 2345900 12345
A 中的一些數據不包含在數據集 B 中。如何列出 A 中的所有這些數據,以及如何列出 A 和 B 共享的所有數據。我如何使用 Linux/UNIX 命令來做到這一點?
使用
comm
命令。如果您的列表在文件中
listA
並且listB
:comm listA listB
預設情況下, comm 將返回 3 列。僅在 listA 中的項目,僅在 listB 中的項目,以及兩個列表共有的項目。
-1
您可以使用、-2
或-3
arg抑制單個列。
這將為您提供 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