> 텍스트 처리 및 검색 > comm

comm: 정렬된 두 파일의 공통 및 고유한 줄 비교

comm 명령어는 정렬된 두 파일의 내용을 비교하여, 한쪽에만 있는 줄과 양쪽에 공통으로 있는 줄을 세 개의 열로 나누어 출력합니다. 병합이나 중복 제거 작업에 유용합니다.

개요

comm은 'common'의 약자로, 두 개의 이미 정렬된 파일 간의 줄을 비교하는 데 특화된 명령어입니다. 파일 내용을 병렬로 비교하고, 그 결과를 세 개의 열로 구분하여 보여줍니다. 첫 번째 열은 첫 번째 파일에만 있는 줄, 두 번째 열은 두 번째 파일에만 있는 줄, 세 번째 열은 두 파일 모두에 있는 공통된 줄을 나타냅니다. 이 명령어는 특히 데이터베이스 목록이나 사용자 ID 목록 같은 정렬된 텍스트 데이터를 비교할 때 매우 강력합니다.

주요 특징

comm 명령어의 주요 특징은 다음과 같습니다.

  • 두 개의 정렬된 파일을 비교하는 데 사용됩니다. (파일이 정렬되지 않은 경우 `sort` 명령을 먼저 사용해야 합니다.)
  • 비교 결과를 세 개의 열로 깔끔하게 구분하여 출력합니다.
  • 텍스트 데이터의 공통점과 차이점을 한눈에 파악하기 용이합니다.
  • 출력 열을 선택적으로 숨기는 기능이 있어 다양한 용도로 활용 가능합니다.

comm vs diff

comm과 diff는 모두 파일 비교 도구지만, 작동 방식과 목적에 차이가 있습니다.

  • comm: 정렬된 파일에 특화되어 있으며, 공통된 줄과 고유한 줄을 세 열로 출력합니다. 변경 사항(줄 내용의 수정)은 감지하지 못합니다.
  • diff: 정렬되지 않은 파일도 비교할 수 있으며, 줄 단위의 모든 변경 사항(추가, 삭제, 수정)을 상세히 출력합니다.

주요 옵션

comm 명령어의 옵션은 주로 특정 열을 숨기는 데 사용됩니다.

1) 출력 열 제어

2) 도움말

생성된 명령어:

명령어를 조합해 보세요.

설명:

`comm` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 예시

comm 명령어의 다양한 사용 예시를 통해 기능을 익혀보세요.

두 파일의 공통 및 고유한 줄 비교

comm file1.txt file2.txt

정렬된 두 파일의 내용을 세 개의 열로 비교합니다.

두 파일에 공통으로 있는 줄만 출력

comm -12 file1.txt file2.txt

`-1`과 `-2` 옵션을 사용하여 첫 번째와 두 번째 파일에만 있는 줄을 숨기고, 공통된 줄만 출력합니다.

두 파일의 고유한 줄만 출력

comm -3 file1.txt file2.txt

`-3` 옵션을 사용하여 공통된 줄을 숨기고, 각 파일에 고유하게 있는 줄만 출력합니다.

정렬되지 않은 파일 비교

comm <(sort file1.txt) <(sort file2.txt)

`sort` 명령어를 파이프(`|`)를 통해 `comm`과 함께 사용하여 정렬되지 않은 파일도 비교할 수 있습니다.

설치

comm은 대부분의 리눅스 배포판에 `coreutils` 패키지의 일부로 기본 포함되어 있습니다. 별도의 설치가 필요하지 않습니다.

팁 & 주의사항

comm 명령어 사용 시 유의할 점들을 정리했습니다.

  • comm을 사용하기 전에 **반드시 파일의 내용을 정렬해야 합니다.** 파일이 정렬되지 않으면 올바른 비교 결과를 얻을 수 없습니다.
  • 파일이 정렬되었는지 확인하려면 `comm file1.txt file2.txt`를 실행했을 때 출력이 예상과 다른지 확인하거나, `sort` 명령을 통해 파일을 정렬한 후 다시 비교해보면 됩니다.
  • `<(...)` 문법은 프로세스 치환(process substitution)으로, `sort` 명령의 결과를 임시 파일처럼 `comm`에 전달하는 역할을 합니다. 이 방법은 정렬되지 않은 파일도 간편하게 비교할 수 있게 해줍니다.

관련 명령어

기능적으로 유사하거나 함께 자주쓰이는 명령어들입니다.


동일 카테고리 명령어