일부 단어의 내용을 포함하는 두 개의 파일이 있습니다.
예
file1에는 10개의 단어가 있습니다.
world
earth
eye
ear
near
from
going
want
we
our
두 번째 file2에는 7개의 단어가 있습니다.
world
earth
eye
ear
near
going
want
file2에 없는 단어를 세 번째 파일로 출력하고 싶습니다.
예를 들어 (from, our, we)는 file2에 존재하지 않습니다.
답변1
그냥 해
grep -vFxf file2 file1 > file3
그러면 file2에는 없지만 file1에는 있는 행이 반환되고 결과가 file3에 기록됩니다.
-v
, 역방향 일치, 이는 해당 행이 file2에만 존재한다는 것을 의미합니다. 이것이 없으면-v
두 파일 모두에 있는 해당 행이 반환됩니다.-F
, 이는grep
패턴이 정규식(regex)이 아닌 고정 패턴 문자열과 일치함을 나타냅니다.-x
, 전체 줄을 패턴 문자열로 일치시킵니다.-f
, 파일에서 패턴을 읽습니다.
또는 질문 제목과 언급한 명령을 기반으로 sort -u
이러한 고유한 단어(실제로 줄)가 file1 또는 file2에 있기를 원하는 것 같습니다. 그렇다면 그냥 하면 됩니다.
uniq -u <(sort file1 file2) > file3
답변2
또 다른 해결책:
comm -23 <(sort file1) <(sort file2) > file3
-23은 file2 또는 두 파일 모두에 포함된 행만 억제합니다.