2014-12-26 1 views
-1

저는 쉘 스크립트에있어 매우 익숙합니다. 한 프로덕션 스크립트가 잘못 삭제되었습니다. 우리는 대본을 준비해야합니다. 내 요구 사항은 아래와 같습니다.유닉스와 awk 또는 perl 스크립트에서 두 파일을 비교하십시오.

두 파일 file1과 file2를 비교해야합니다. 각 파일에는 |으로 구분 된 56 개의 열이 있습니다.

첫 번째 열은 파일의 직원 번호이며 동일한 직원 번호가 두 번째 파일에 있는지 여부를 확인합니다. 그렇지 않으면 전체 행을 출력 파일에 씁니다. file2에 동일한 직원 번호가 있으면 각 열의 값을 비교해야합니다. 데이터가 일치하지 않으면 출력 파일에 데이터를 기록해야합니다. 각 열의 값이 일치하면 해당 레코드를 생략해야합니다.

Sample File 
File 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||| 
File 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||| 

Sample Output: 
2620|256034|131021|Mission Quality and Wipro Way||| 
2621|256034|131021|Mission Quality and Wipro Way||| 
2622|256034|131021|Mission Quality||| 
+0

diff 유틸리티를 살펴보십시오. – lonewasp

답변

1
awk 'FILENAME=="file1" {arr[$0]++} 
    FILENAME=="file2" {if($0 in arr) {continue} else {print $0} }' file1 file2 >newfile 

이 포럼은 정말 작업 재해를 고정하는 것은 아닙니다. 과. 참고 : 사양이 나에게 어둡게 보입니다. 이 예에서는 file2 레코드를 새 파일에 씁니다. 당신이 말하는 것처럼 보이는 것이 필요합니다.

백업에서 스크립트를 복원 할 수도 있습니다.

관련 문제