删除列表之间的重复单词

删除列表之间的重复单词

从列表之间删除重复的单词示例:

我们有两个清单;第一个列表包含:

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

您可以使用diffusing--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打印任何相同的行。

相关内容