2014-01-14 5 views
0

나는 수백 개의 항목이있는 몇 가지 패키지 목록을 가지고 있으며 그 차이점을 찾고 싶습니다. 파일의두 파일의 차이점 찾기

내용은

파일과 같이 1 :

somepackage1 0.1 
somepackage2 5.6 
somepackage3 1.3-1 
etc... 

파일 2 :

somepackage1 0.1 
somepackage2 5.7 
somepackage3 1.3-1 
somepackage4 0.1 
etc... 

내가 명령의 몇 가지 또는 생성 할 수있는 스크립트를 찾고 있어요 추가 된 모든 새 패키지 버전 번호뿐 아니라 새 패키지가 추가 된 경우.

예를 들어, 명령 또는 스크립트는 위의 두 파일이 주어진 경우 somepackage4을 출력합니다.

몇 가지 명령을 사용해 왔지만 제대로 작동하지 못합니다. 누구든지이 일을하는 좋은 방법이 있습니까?

답변

1

파일의 첫 번째 열을 비교하고 두 번째 열에서 고유 한 줄을 인쇄하는 것이 좋습니다. comm 사용하여 입력하여

comm -13 <(awk '{print $1}' file1 | sort) <(awk '{print $1}' file2 | sort) 

를, 그것은 생산하는 것 :

somepackage4 
+0

예! 정확히 내가 원했던 것!. 나는 diff로 놀고 있었지만 항상 같은 줄 번호에있는 것은 아니기 때문에 그냥 일하는 것이 아니 었습니다. –

0

당신이 파일 1

grep -vf <(cut -d' ' -f1 file1) <(cut -d' ' -f1 file2) 
0

에 파일 2에 나와 있지만에서 패키지를 찾을 grep
을 사용할 수 있습니다 awk 사용하기

awk 'NR==FNR{a[$1];next}!($1 in a){print $1}' file1 file2