목록 사이에 중복된 단어를 제거하는 예:
두 개의 목록이 있습니다. 첫 번째 목록에는 다음이 포함됩니다.
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