목록 사이의 중복 단어 제거 [중복]

목록 사이의 중복 단어 제거 [중복]

목록 사이에 중복된 단어를 제거하는 예:

두 개의 목록이 있습니다. 첫 번째 목록에는 다음이 포함됩니다.

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옵션을 사용하여 사용할 수 있습니다 --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='%>'FILE1에 없는 새 항목은 FILE2()에서 출력됩니다 %>.
  • 이렇게 하면 동일한 줄이 인쇄되는 것을 --unchanged-group-format=''방지할 수 있습니다 .diff

관련 정보