![unix 쉘 스크립트 - 2개의 파일을 비교합니다. file1에는 2개의 열(emp id)과 emp_sal이 있고, 파일 2에는 2개의 열(emp_id)과 emp_sal이 있습니다.](https://linux55.com/image/140929/unix%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20-%202%EA%B0%9C%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%B9%84%EA%B5%90%ED%95%A9%EB%8B%88%EB%8B%A4.%20file1%EC%97%90%EB%8A%94%202%EA%B0%9C%EC%9D%98%20%EC%97%B4(emp%20id)%EA%B3%BC%20emp_sal%EC%9D%B4%20%EC%9E%88%EA%B3%A0%2C%20%ED%8C%8C%EC%9D%BC%202%EC%97%90%EB%8A%94%202%EA%B0%9C%EC%9D%98%20%EC%97%B4(emp_id)%EA%B3%BC%20emp_sal%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
emp_id
각각의 in이 file1
합계에 존재하는지 비교해야 하고 file2
, 그런 다음 in 과 합계가 해당 항목과 일치하는지 emp_id
비교해야 합니다 . 마찬가지로 모든 것을 비교하여 한 파일에서는 일치하는 출력을 반환하고 다른 파일에서는 일치하지 않는 출력을 반환해야 합니다.emp_sal
file1
file2
emp_id
emp_ids
file1
file2
파일 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 공백으로 대체되었습니다.