Unix에서 서로 다른 두 파일 간의 데이터 비교

Unix에서 서로 다른 두 파일 간의 데이터 비교

2개의 다른 파일이 있습니다.

파일 1

2
4
6
8
10
12

파일 2

2
3
5
6
10
12

2개의 파일을 비교하여 파일 1에는 있지만 파일 2에는 없는 출력 데이터를 얻고 싶습니다.

산출

4
8

아래 명령을 사용하고 있지만 원하는 출력을 얻지 못했습니다.

통신-23 파일1 파일2

답변1

제대로 작동 하려면 comm두 파일 모두 숫자순이 아닌 사전순으로 정렬되어야 합니다. comm전화하기 전에 파일을 정렬 할 수 있습니다.

sort -o file1 file1
sort -o file2 file2 

그 다음에:

$ comm -23 file1 file2
4
8

comm또는 쉘이 프로세스 대체를 지원하는 경우 다음을 호출하는 동안 파일을 정렬할 수 있습니다.

$ comm -23 <( sort file1 ) <( sort file2 )
4
8

답변2

그렙을 사용할 수 있습니다

grep -F -x -f 'File2' -v 'File1'

File2(-f)의 고정 문자열(-F)에 대한 패턴

-x전체 줄을 일치시키는 데 사용됩니다 . 그렇지 않으면 File1의 "0123"은 File2의 "12"로 인해 출력에서 ​​제외됩니다.

비슷한 직선을 찾고 (-v)를 사용하여 역함수를 찾습니다.

관련 정보