Linux에서 이 명령(sort -u 명령)을 어떻게 실행할 수 있나요?

Linux에서 이 명령(sort -u 명령)을 어떻게 실행할 수 있나요?

일부 단어의 내용을 포함하는 두 개의 파일이 있습니다.

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 또는 두 파일 모두에 포함된 행만 억제합니다.

관련 정보