unix实用程序,用于比较列表和执行设置操作

时间:2016-12-14 06:49:16

标签: shell sorting unix set utility

我相信我要求的是一种固定操作。我需要帮助尝试创建以下列表:

List1包含:

1
2
3
A
B
C

List2包含:

1
2
3
4
5
A
B
C
D
E

(我需要这个) - 我需要的最终名单是(4)项目:

4
5
D
E

显然,List2包含的元素多于List1。 我需要的最终列表是List2中不在List1中的元素。

我可以用哪个linux实用程序来完成此任务?我看过sortcomm,但我不确定如何正确地做到这一点。谢谢你的帮助

3 个答案:

答案 0 :(得分:1)

使用awk直接逻辑。

awk 'FNR==NR{a[$0]; next}!($0 in a)' file1 file2
4
5
D
E

使用GNU comm实用程序,根据man comm页面

comm -3 file1 file2
      Print lines in file1 not in file2, and vice versa.

将它用于您的示例

comm -3 file2 file1
4
5
D
E

答案 1 :(得分:0)

您可以使用简单的grep命令将该匹配项与-v相反,并使用-f从list1中读取搜索字词,例如: grep -v -f list1 list2。使用示例:

$ grep -v -f list1 list2
4
5
D
E

Linux为这只猫提供了许多不同的方法。

答案 2 :(得分:0)

你可以试试这个:

$ diff list1.txt list2.txt | egrep '>|<' | awk '{ print $2 }' | sort -u
4
5
D
E

我希望能帮到你