从列表之间删除重复的单词示例:
我们有两个清单;第一个列表包含:
a
b
c
d
第二个列表包含:
a
b
c
d
e
f
我想对第一个列表和第二个列表进行比较,删除两个列表中包含的匹配项,结果如下:
e
f
我找不到使用 bash 执行此操作的解决方案,但我确实在 python 中找到了一个解决方案:https://stackoverflow.com/questions/7961363/removing-duplicates-in-lists/7961390#7961390
答案1
您可以使用diff
using--GTYPE-group-format=GFMT
选项。从man diff
:
--GTYPE-group-format=GFMT
format GTYPE input groups with GFMT
LTYPE is 'old', 'new', or 'unchanged'.
GTYPE is LTYPE or 'changed'.
GFMT (only) may contain:
%< lines from FILE1
%> lines from FILE2
%= lines common to FILE1 and FILE2
在你的情况下,你可以使用diff --new-group-format='%>' --unchanged-group-format='' list1 list2
$ cat list1
a
b
c
d
$ cat list2
a
b
c
d
e
f
$ diff --new-group-format='%>' --unchanged-group-format='' list1 list2
e
f
解释
--new-group-format='%>'
将从 FILE2 ( ) 输出 FILE1 中不存在的任何新条目%>
。- 这
--unchanged-group-format=''
将防止diff
打印任何相同的行。