| HOME / 정보공유 / AIX 명령어 모음

join
join join 명령 목적 두 파일의 데이터 필드를 결합합니다. 구문
join [ -a FileNumber | -v FileNumber ] [ -e String ] [ -o List ] [ -t Character ] [ -1 Field ] [ -2 Field ] File1 File2
설명
join 명령은 File1 및 File2 매개변수가 지정하는 파일을 읽고, 플래그에 따라서 파일의 행을 결합하고, 결과를 표준 출력에 기록합니다. File1 및 File2 매개변수는 반드시 텍스트 파일이어야 합니다. File1 및 File2 모두 join 명령을 호출하기에 앞서 이 파일이 결합되는 필드에서 분류 -b의 배열(collating) 순서로 분류되어야 합니다.
양쪽 파일에서 나타나는 각각의 동일한 결합 필드에 대해 한 행씩 출력에 나타납니다. 결합 필드는 출력에 포함될 것을 판별하기 위해 join 명령이 조사하는 입력 파일의 필드입니다. 출력 행은 결합 필드, File1 매개변수가 지정하는 파일의 행에서 나머지 필드, 그리고 File2 매개변수가 지정하는 파일 행의 나머지 필드로 구성됩니다. -(대쉬)를 파일 이름으로 대체하여 File1 또는 File2 매개변수 중 하나 대신 표준 입력을 지정하십시오. 두 입력 파일 모두를 -(대쉬)로 지정할 수는 없습니다.
필드는 일반적으로 공백, 탭 문자 또는 개행 문자로 분리됩니다. 이 경우에, join 명령은 연속적인 분리자를 하나의 분리자로 취급하며 앞에 오는 분리자들을 버립니다.
플래그
-1 Field File1 입력 파일의 Field 변수에 의해 지정된 필드를 사용하여 두 파일을 결합합니다. Field 변수의 값은 반드시 양의 10진 정수여야 합니다.
-2 Field File2 입력 파일의 Field 변수에 의해 지정된 필드를 사용하여 두 파일을 결합합니다. Field 변수의 값은 반드시 양의 10진 정수여야 합니다.
-a FileNumber 다른 입력 파일의 어떤 행과도 일치하지 않는 결합 필드를 가진 FileNumber 변수가 지정한 파일의 각 행에 대한 출력 행을 생성합니다. 출력 행은 디폴트 출력에 추가하여 작성됩니다. FileNumber 변수의 값은 각각 File1 및 File2 매개변수가 지정하는 파일에 대응하여 1 또는 2여야 합니다. 이 플래그가 -v 플래그와 함께 지정되는 경우, 이 플래그는 무시됩니다.
-e String String 변수가 지정하는 문자열로 빈 출력 필드를 대체합니다.
-o List List 변수에서 지정되는 필드를 구성하기 위한 출력 행을 구축합니다. 다음 양식 중 하나가 List 변수에 적용됩니다.
FileNumber.Field
여기서, FileNumber는 파일 번호이고 Field는 10진수 필드 번호입니다. 여러 필드 주위를 인용 부호로 묶고 ,(쉼표)나 공백 문자로 여러 개의 필드를 분리하십시오.
0 (zero)
결합 필드를 표현합니다. -o 0 플래그는 기본적으로 결합 필드의 통합을 선택합니다.
-t Character Character 매개변수가 지정하는 문자를 입력 및 출력에서 필드 분리자로 사용합니다. 행의 문자의 모든 외양이 중요합니다. 디폴트 분리자는 공백입니다. 디폴트 필드 분리의 경우, 배열(collating) 순서는 sort -b 명령의 순서입니다. -t를 지정하는 경우의 순서는 일반 분류의 순서입니다. 탭 문자를 지정하려면, 그것을 작은 따옴표로 묶으십시오.
-v FileNumber 다른 입력 파일의 어떤 행과도 일치하지 않는 결합 필드를 가진 FileNumber 변수가 지정한 파일의 각 행에 대한 출력 행을 생성합니다. 디폴트 출력은 작성되지 않습니다. FileNumber 변수의 값은 각각 File1 및 File2 매개변수가 지정하는 파일에 대응하여 1 또는 2여야 합니다. 이 플래그가 -a 플래그와 함께 지정되는 경우, -a 플래그는 무시됩니다.
종료 상태
이 명령은 다음과 같은 종료 값을 리턴합니다.
0 성공적으로 완료되었습니다.
>0 오류가 발생했습니다.
예제
주: 다음 예제에서 표시되는 수직 정렬은 사용자의 출력과 일치하지 않을 수도 있습니다.
첫번째 필드가 같은 두 개의 파일에 대한 단순 결합 조작을 수행하려면, 다음을 입력하십시오.
join phonedir names
phonedir 파일에 다음 이름이 들어 있는 경우
Adams A. 555-6235
Dickerson B. 555-1842
Erwin G. 555-1234
Jackson J. 555-0256
Lewis B. 555-3237
Norwood M. 555-5341
Smartt D. 555-1540
Wright M. 555-1234
Xandy G. 555-5015
그리고 names 파일에 다음 이름과 부서 번호가 있을 경우
Erwin Dept. 389
Frost Dept. 217
Nicholson Dept. 311
Norwood Dept. 454
Wright Dept. 520
Xandy Dept. 999
join 명령은 다음을 표시합니다.
Erwin G. 555-1234 Dept. 389
Norwood M. 555-5341 Dept. 454
Wright M. 555-1234 Dept. 520
Xandy G. 555-5015 Dept. 999
각 행은 결합 필드(성), 그 뒤에 phonedir 파일에서 발견된 나머지 행 그리고 names 파일에서 발견된 나머지 행으로 구성됩니다.
join 명령과 일치하지 않는 행을 표시하려면, 다음을 입력하십시오.
join -a1 phonedir names
phonedir 과 names 파일이 예1과 같다면, join 명령은 다음을 표시합니다.
Erwin G. 555-1234 Dept. 389
Frost Dept. 217
Nicholson Dept. 311
Norwood M. 555-5341 Dept. 454
Wright M. 555-1234 Dept. 520
Xandy G. 555-5015 Dept. 999
이 명령은 예1과 같은 결합 조작을 수행하고, 또한 phonedir 파일에 일치하지 않는 이름 행을 나열합니다. 이름 Frost와 Nicholson은 phonedir 파일에 항목이 없지만 리스트에는 포함되어 있습니다.
join 명령으로 선택된 필드를 표시하려면, 다음을 입력하십시오.
join -o 2.3,2.1,1.2,1.3 phonedir names
다음 필드가 제공된 순서대로 표시됩니다.
names의 필드 3 부서 번호
names의 필드 1 성
phonedir의 필드 2 최초 이니셜
phonedir의 필드 3 전화번호
phonedir 파일 및 names 파일이 예제 1에서와 같은 경우, join 명령은 다음을 표시합니다.
389 Erwin G. 555-1234
454 Norwood M. 555-5341
520 Wright M. 555-1234
999 Xandy G. 555-5015
첫번째 이외의 다른 필드에 결합 조작을 수행하려면, 다음을 입력하십시오.
sort +2 -3 phonedir | join -1 3 - numbers
이 명령은 phonedir 및 numbers 파일의 행을, phonedir 파일의 세번째 필드와 numbers 파일의 첫번째 필드를 비교하여 결합합니다.
먼저, 양쪽 파일을 결합 필드로 분류해야 하므로, 이 명령은 phonedir 파일을 세 번째 필드에 의해 분류합니다. 그런 다음, sort 명령의 출력이 join 명령으로 파이프됩니다. -(대쉬) 자체로 인해 join 명령이 이 출력을 최초 파일로서 사용합니다. -1 3 플래그는 분류된 phonedir 파일의 세 번째 필드를 결합 필드로서 정의합니다. 이것의 결합 필드가 -2 플래그로 지정되어 있지 않기 때문에 numbers의 첫번째 필드와 비교됩니다.
numbers 파일에 다음이 포함되어 있을 경우
555-0256
555-1234
555-5555
555-7358
이 명령은 phonedir 파일에 나열된 이름 또는 각 전화번호를 표시합니다.
555-0256 Jackson J.
555-1234 Erwin G.
555-1234 Wright M.
join 명령이 제공된 필드에 대한 모든 일치사항을 나열하는 것에 유의하십시오. 이 예제에서 join 명령은 전화번호가 555-1234인 Erwin G.와 Wright M.을 모두 나열합니다. 번호 555-5555는 그것이 phonedir 파일에 나타나지 않기 때문에 나열되지 않습니다.
파일
/usr/bin/join join 명령이 들어 있습니다.
/usr/lib/nls/loc/*.src 배열(collating) 정보가 들어 있습니다.
관련 정보
awk 명령, comm 명령, cut 명령, paste 명령, sort 명령.