我相信我要求的是一种固定操作。我需要帮助尝试创建以下列表:
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实用程序来完成此任务?我看过sort
,comm
,但我不确定如何正确地做到这一点。谢谢你的帮助
答案 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
我希望能帮到你