![删除列表之间的重复单词](https://linux22.com/image/181936/%E5%88%A0%E9%99%A4%E5%88%97%E8%A1%A8%E4%B9%8B%E9%97%B4%E7%9A%84%E9%87%8D%E5%A4%8D%E5%8D%95%E8%AF%8D.png)
从列表之间删除重复的单词示例:
我们有两个清单;第一个列表包含:
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
打印任何相同的行。