Linux / 명령어 / comm - 정렬된 두 파일의 공통·고유 행 비교
comm은 정렬된 두 파일을 행 단위로 비교하여 첫 파일만의 행, 둘째 파일만의 행, 공통 행을 세 열로 보여 줍니다.
comm 명령어란?
기본 출력의 두 번째·세 번째 열 앞에는 탭이 붙습니다. 필요한 열만 남기려면 -1, -2, -3으로 해당 열을 숨깁니다. 텍스트의 위치별 변경을 보려는 목적이라면 diff가 더 적합합니다.
기본 문법
comm [옵션] 정렬된파일1 정렬된파일2
설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man comm으로 현재 시스템의 설명을 확인하세요.
사용 예제
세 종류의 행 보기
양쪽 파일을 동일한 기준으로 정렬한 후 비교합니다.
comm old.sorted new.sorted
공통 행만 출력
첫 번째와 두 번째 열을 숨겨 세 번째 공통 열만 남깁니다.
comm -12 old.sorted new.sorted
둘째 파일에만 있는 행
첫 번째와 공통 열을 숨깁니다.
comm -13 old.sorted new.sorted
세 열과 공통 행 읽기
comm은 첫 번째 파일에만 있는 행, 두 번째 파일에만 있는 행, 두 파일에 공통인 행을 열로 구분합니다. -12는 앞의 두 열을 숨겨 공통 행만 남깁니다.
printf 'apple\nbanana\n' > first.txt printf 'banana\ncherry\n' > second.txt comm -12 first.txt second.txt
예시 출력:
banana
두 파일은 같은 로케일에서 미리 정렬되어 있어야 합니다. 정렬되지 않은 입력은 열의 의미를 신뢰하기 어렵습니다. comm은 행의 존재 여부를 비교하고, diff는 줄 위치를 포함한 변경 내용을 보여준다는 차이도 기억하세요.
주요 옵션과 형식
| 옵션·형식 | 설명 |
|---|---|
-1 |
첫 파일에만 있는 행의 열을 숨깁니다. |
-2 |
둘째 파일에만 있는 행의 열을 숨깁니다. |
-3 |
두 파일에 공통인 행의 열을 숨깁니다. |
--check-order |
GNU 구현에서 정렬 순서를 검사합니다. |
사용할 때 주의할 점
입력 파일을 같은 로케일로 정렬하세요. 예를 들어 LC_ALL=C sort로 만든 파일은 비교도 같은 로케일에서 수행합니다. comm은 집합의 키별 수량 비교가 아니라 정렬된 행의 비교이므로 중복 행의 의미를 미리 결정해야 합니다.
자주 묻는 질문
comm 결과의 열은 무엇을 뜻하나요?
첫 열은 파일1에만, 둘째 열은 파일2에만, 셋째 열은 두 파일에 공통인 행입니다.
공식 문서
옵션의 정확한 동작과 구현별 차이는 comm 관련 공식 문서에서 확인할 수 있습니다.









