unix와 awk의 두 파일 비교

unix와 awk의 두 파일 비교

file1과 file2라는 두 파일을 비교해야 합니다. 각 파일에는 로 시작하는 56개의 열이 있습니다 |. 첫 번째 열은 파일의 직원 번호이고 두 번째 파일에도 동일한 직원 번호가 있는지 확인하겠습니다. 그렇지 않은 경우 전체 줄을 출력 파일에 씁니다. 파일2에 동일한 사원번호가 존재한다면 각 컬럼의 값을 비교해야 합니다. 데이터가 일치하지 않으면 출력 파일에 써야 합니다. 각 열의 값이 일치하면 해당 레코드를 무시해야 합니다.

샘플 파일
파일 1

2620|256034|131021|Mission Quality and Wipro Way|||
2622|256034|131021|Mission Quality and Wipro Way|||
2623|256034|131021|Mission Quality and Wipro Way|||

파일 2

2620|256034|234567|Mission Quality and Wipro Way|||
2621|256034|131021|Mission Quality and Wipro Way|||
2622|256034|131021|Mission Quality|||
2623|256034|131021|Mission Quality and Wipro Way|||

예제 출력:

2620|256034|131021|Mission Quality and Wipro Way|||
2621|256034|131021|Mission Quality and Wipro Way|||
2622|256034|131021|Mission Quality|||

답변1

만약에파일이 정렬되었습니다.작업을 완료하는 것은 쉽습니다.diff

comm -13 File1 File2

답변2

awk예를 들어 다음을 사용할 수 있습니다 .

awk -F'|' 'NR==FNR {a[$1]=$0;next;}; !($1 in a) || ($0 != a[$1]);' File1 File2

귀하의 예를 사용 File1하고File2

$ awk -F'|' 'NR==FNR {a[$1]=$0;next;}; !($1 in a) || ($0 != a[$1]);' File1 File2
2620|256034|234567|Mission Quality and Wipro Way|||
2621|256034|131021|Mission Quality and Wipro Way|||
2622|256034|131021|Mission Quality|||

관련 정보