개요
join은 두 파일의 특정 필드를 비교하여 일치하는 라인을 결합합니다. 이 명령어는 입력 파일이 공통 필드를 기준으로 정렬되어 있어야 올바르게 작동합니다. 정렬되지 않은 파일에 사용하면 예상치 못한 결과가 나올 수 있습니다.
주요 특징
- 두 파일의 공통 필드 기반 병합
- 입력 파일 정렬 필수
- 다양한 옵션으로 출력 형식 제어
- 데이터 통합 및 보고서 생성에 유용
주요 옵션
join 명령어는 다양한 옵션을 통해 병합 기준, 출력 형식, 그리고 일치하지 않는 라인 처리 방식을 세밀하게 제어할 수 있습니다.
필드 지정 및 구분자
출력 제어
생성된 명령어:
명령어를 조합해 보세요.
설명:
`join` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
join 명령어의 다양한 활용 예시를 통해 두 파일의 데이터를 효과적으로 병합하는 방법을 알아봅니다.
기본 병합
echo "1 apple\n2 banana" > file1.txt && echo "1 red\n2 yellow" > file2.txt && join file1.txt file2.txt
두 파일의 첫 번째 필드를 기준으로 병합합니다. (파일 생성 후 실행)
특정 필드 병합
echo "apple 1\nbanana 2" > file3.txt && echo "red 1\nyellow 2" > file4.txt && join -j 2 file3.txt file4.txt
두 파일의 두 번째 필드를 기준으로 병합합니다. (파일 생성 후 실행)
탭 구분자 사용
echo -e "id\tname\n1\tAlice\n2\tBob" > users.tsv && echo -e "id\tcity\n1\tSeoul\n3\tParis" > cities.tsv && join -t $'\t' users.tsv cities.tsv
탭으로 구분된 파일들을 병합합니다. (파일 생성 후 실행)
일치하지 않는 라인 포함
echo "1 apple\n2 banana\n3 orange" > file5.txt && echo "1 red\n2 yellow" > file6.txt && join -a 1 file5.txt file6.txt
첫 번째 파일(file5.txt)에만 있는 라인도 출력에 포함합니다. (파일 생성 후 실행)
특정 필드만 출력
echo "1 apple\n2 banana" > file7.txt && echo "1 red\n2 yellow" > file8.txt && join -o 1.1,1.2,2.2 file7.txt file8.txt
첫 번째 파일의 첫 번째, 두 번째 필드와 두 번째 파일의 두 번째 필드만 출력합니다. (파일 생성 후 실행)
팁 & 주의사항
join 명령어를 사용할 때 유용한 팁과 주의해야 할 점들입니다.
중요 팁
- **입력 파일 정렬**: join 명령어는 입력 파일이 조인 필드를 기준으로 정렬되어 있어야만 올바르게 작동합니다. `sort` 명령어를 사용하여 미리 정렬하는 것이 필수적입니다. 예: `sort file1.txt > sorted_file1.txt`
- **필드 구분자**: 기본 구분자는 공백(스페이스, 탭)입니다. 다른 구분자를 사용하려면 `-t` 옵션을 사용하세요. 예를 들어, CSV 파일의 경우 `-t ','`를 사용합니다.
- **출력 형식 제어**: `-o` 옵션을 사용하여 출력될 필드의 순서와 포함 여부를 정밀하게 제어할 수 있습니다. `FILENUM.FIELDNUM` 형식으로 지정합니다 (예: `1.2`는 첫 번째 파일의 두 번째 필드).
- **일치하지 않는 라인 처리**: `-a` 또는 `-v` 옵션을 사용하여 일치하는 라인뿐만 아니라 일치하지 않는 라인도 포함하거나, 일치하지 않는 라인만 출력할 수 있습니다.