unix 쉘 스크립트 - 2개의 파일을 비교합니다. file1에는 2개의 열(emp id)과 emp_sal이 있고, 파일 2에는 2개의 열(emp_id)과 emp_sal이 있습니다.

unix 쉘 스크립트 - 2개의 파일을 비교합니다. file1에는 2개의 열(emp id)과 emp_sal이 있고, 파일 2에는 2개의 열(emp_id)과 emp_sal이 있습니다.

emp_id각각의 in이 file1합계에 존재하는지 비교해야 하고 file2, 그런 다음 in 과 합계가 해당 항목과 일치하는지 emp_id비교해야 합니다 . 마찬가지로 모든 것을 비교하여 한 파일에서는 일치하는 출력을 반환하고 다른 파일에서는 일치하지 않는 출력을 반환해야 합니다.emp_salfile1file2emp_idemp_idsfile1file2

파일 1

Emp-id emp-sal
1234.     1200
1255.     1400
4567.      5800
8765.      2340

파일 2

Emp-num. Emp-sal- amt
1234.   1200
1255.    1700
4567.   5800
8765.   2340

일치하는 레코드 출력

Emp-id emp-sal emp- sal-amt
1234.    1200.     1200 
4567.     5800.    5800
8765.      2340.    2340

불일치

Emp-id emp-sal emp-sal-amt
1255.    1400.     1700

답변1

지원 사례:

join <(< File1 sed '1d; s/  */ /g' | sort -n -k1,1) \
     <(< File2 sed '1d; s/  */ /g' | sort -n -k1,1) | awk '$2==$3'

join필드는 단일 문자(기본값은 공백)로 구분되어야 하며 행은 키 필드(기본값은 첫 번째 필드)별로 정렬되어야 하므로 sed입력을 정리하기 위해 일부를 추가했습니다. '1d;헤더는 건너뛰고 s/ */ /g'여러 공백은 생략됩니다. A 공백으로 대체되었습니다.

관련 정보