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 관련 공식 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / shutdown - 시스템 종료·재시작 예약과 취소

Linux / 명령어 / shutdown - 시스템 종료·재시작 예약과 취소

Linux shutdown 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux 강좌 / 프로세스 확인·일시정지·종료하기

Linux 강좌 / 프로세스 확인·일시정지·종료하기

ps, top, pgrep으로 프로세스의 상태와 자원 사용량을 확인합니다. 실습 프로세스에 STOP, CONT, TERM을 보내고 셸 작업과 서비스의 차이를 익힙니다.

Linux / 명령어 / unxz - xz 압축 파일 풀기

Linux / 명령어 / unxz - xz 압축 파일 풀기

Linux unxz 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

Linux / 명령어 / tracepath - 네트워크 경로와 경로 MTU 확인

Linux / 명령어 / tracepath - 네트워크 경로와 경로 MTU 확인

Linux tracepath 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / apt - Debian·Ubuntu에서 패키지 검색·설치·업데이트

Linux / 명령어 / apt - Debian·Ubuntu에서 패키지 검색·설치·업데이트

Linux apt 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

Linux / 명령어 / rsync - 파일·디렉터리의 변경분 동기화

Linux / 명령어 / rsync - 파일·디렉터리의 변경분 동기화

Linux rsync 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / watch - 명령 결과를 주기적으로 반복 확인

Linux / 명령어 / watch - 명령 결과를 주기적으로 반복 확인

Linux watch 명령어로 명령 결과를 일정 간격으로 반복 확인하는 방법을 설명합니다. -n, -d, -g, -p 옵션과 파이프·따옴표 사용법, 메모리·디스크·프로세스 모니터링 예제를 정리합니다.

Linux / 명령어 / ping - 호스트 응답과 왕복 시간 확인

Linux / 명령어 / ping - 호스트 응답과 왕복 시간 확인

Linux ping 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / ssh-keygen - SSH 키 쌍 생성과 지문 확인

Linux / 명령어 / ssh-keygen - SSH 키 쌍 생성과 지문 확인

Linux ssh-keygen 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux 강좌 / 셸의 명령 실행 방식 - ;, &&, ||, 별칭과 환경 변수

Linux 강좌 / 셸의 명령 실행 방식 - ;, &&, ||, 별칭과 환경 변수

Bash가 명령을 해석하고 종료 상태에 따라 다음 명령을 실행하는 방식을 알아봅니다. ;, &&, ||와 별칭·환경 변수의 차이를 안전한 예제로 설명합니다.