Linux

列出兩個普通數據集之間的差異和重疊

  • January 11, 2012

可能重複:

將文件視為集合併對其執行集合操作的 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-3arg抑制單個列。

這將為您提供 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

引用自:https://unix.stackexchange.com/questions/28865