join — 공통 필드로 파일 결합
Linux / 리눅스 기본 명령어 / join.html
두 텍스트 파일을 공통 키 필드 기준으로 결합하는 명령어.
기본 정보
| 명령어 이름 | join |
|---|---|
| 한 줄 소개 | 두 텍스트 파일을 공통 키 필드 기준으로 결합하는 명령어. |
| 제공 | GNU coreutils |
| 공식 문서 | https://man7.org/linux/man-pages/man1/join.1.html |
| 지원 운영체제 | Linux, macOS, BSD, WSL |
| 설치 여부 | 기본 탑재 |
| 분류 | 리눅스 기본 명령어 (태그: 리눅스 기본 명령어 (태그: join, 결합, 필드, 텍스트)) |
이 명령어는 무엇인가?
join은 두 파일에서 같은 키를 가진 줄을 찾아 하나의 줄로 합칩니다. 데이터베이스의 조인과 비슷하지만, 입력이 키 기준으로 정렬되어 있어야 정확한 결과가 나옵니다.
-1과 -2로 각 파일의 키 필드를, -t로 구분자를, -a로 한쪽에만 있는 줄의 포함 여부를 지정합니다. 정렬되지 않은 입력은 -t와 sort를 조합해 미리 맞춰 두는 것이 안전합니다.
어떤 문제를 해결하는가?
- 사용자 ID로 두 목록을 합칠 때
- CSV 두 개를 공통 키로 결합할 때
- 한쪽에만 있는 항목을 찾아낼 때
- paste로는 안 되는 키 기반 결합이 필요할 때
주요 기능
키 기반 결합
같은 키를 가진 줄을 하나로 합칩니다.
- 활용 상황: 두 목록을 ID로 연결할 때
- 얻는 결과: 관계형 데이터를 파일에서 재현할 수 있습니다.
- 제한 사항: 키가 정렬되어 있지 않으면 결과가 어긋납니다.
필드 지정
-1, -2로 각 파일의 키 필드를 고릅니다.
- 활용 상황: 키가 첫 열이 아닐 때
- 얻는 결과: 원본 형식을 유지하며 결합할 수 있습니다.
- 제한 사항: 필드 번호를 잘못 세면 빈 결과가 나옵니다.
불일치 포함
-a1, -a2, -v로 한쪽에만 있는 줄을 다룹니다.
- 활용 상황: 누락된 항목을 점검할 때
- 얻는 결과: 차집합을 파일로 확인할 수 있습니다.
- 제한 사항: 출력 칸이 비어 해석이 필요합니다.
설치 및 실행
설치 여부 확인
join --version
sudo apt install coreutils # Debian/Ubuntu sudo dnf install coreutils # Fedora
실제 사용 예제
기본 결합
첫 필드를 키로 결합합니다.
sort users.txt -o u.txt
sort mail.txt -o m.txt
join u.txt m.txt
구분자 지정
쉼표 구분 CSV를 결합합니다.
sort -t, -k1,1 a.csv -o a.s
sort -t, -k1,1 b.csv -o b.s
join -t, a.s b.s
한쪽만 있는 항목
왼쪽에만 있는 키를 출력합니다.
join -v1 u.txt m.txt | head