Linux / 명령어 / join - 공통 필드로 두 파일 결합
join은 두 텍스트 파일에서 같은 키 값을 가진 행을 한 행으로 결합합니다. 행 번호가 아니라 필드 값으로 연결한다는 점이 paste와 다릅니다.
join 명령어란?
기본적으로 각 파일의 첫 필드를 키로 사용하고, 두 파일 모두 해당 키로 정렬되어 있어야 합니다. 일치한 행만 출력하는 것이 기본 동작입니다. 누락된 키까지 확인하려면 -a 또는 -v를 검토하세요.
기본 문법
join [옵션] 파일1 파일2
설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man join으로 현재 시스템의 설명을 확인하세요.
사용 예제
첫 필드로 결합
두 파일을 같은 규칙으로 정렬한 뒤 결합합니다.
join names.sorted scores.sorted
구분자 지정
콜론 구분 파일은 두 입력 모두 같은 구분 체계를 사용해야 합니다.
join -t ':' users.sorted roles.sorted
첫 파일의 미일치 행 표시
매칭되지 않은 행도 보고 싶으면 -a 1을 추가합니다.
join -a 1 names.sorted scores.sorted
공통 필드로 결합한 결과
join은 기본적으로 각 파일의 첫 번째 필드가 같은 행을 합칩니다. 다음 파일은 결합 키인 첫 열을 기준으로 미리 정렬되어 있습니다.
printf 'a Ana\nb Bob\n' > names.txt printf 'a 7\nb 12\n' > ages.txt join names.txt ages.txt
예시 출력:
a Ana 7 b Bob 12
입력 파일은 같은 로케일과 같은 키 기준으로 정렬해야 합니다. 일치하지 않는 행은 기본 출력에서 빠지므로, 누락된 키도 확인하려면 -a 1 또는 -a 2를 검토하세요. 예제의 두 파일은 현재 디렉터리에 생성되므로 작업이 끝나면 필요 여부를 확인하고 정리합니다.
주요 옵션과 형식
| 옵션·형식 | 설명 |
|---|---|
-t 문자 |
입력·출력 필드 구분 문자를 지정합니다. |
-1 N / -2 N |
첫째·둘째 파일의 결합 키 필드를 지정합니다. |
-a 1 또는 -a 2 |
지정 파일에서 일치하지 않는 행도 출력합니다. |
-v 1 또는 -v 2 |
지정 파일에서 일치하지 않는 행만 출력합니다. |
-o 형식 |
출력 필드와 순서를 지정합니다. |
사용할 때 주의할 점
두 파일을 동일한 키·구분자·로케일 기준으로 정렬해야 합니다. 정렬되지 않은 입력은 누락되거나 잘못 결합될 수 있습니다. 키가 중복되면 하나의 키에서 여러 출력 행이 생길 수 있어 결과 수를 확인하세요.
자주 묻는 질문
정렬하지 않은 파일을 바로 join할 수 있나요?
일반적인 join 작업은 양쪽 파일이 결합 필드 기준으로 정렬돼 있어야 합니다. 정렬 순서와 로케일을 맞춘 사본을 만든 뒤 실행하세요.
공식 문서
옵션의 정확한 동작과 구현별 차이는 join 관련 공식 문서에서 확인할 수 있습니다.









