2013-08-05 2 views
15

두 파일의 차이점을 찾고 세 번째 파일에만 차이점을 넣고 싶습니다. awk, diff 및 comm을 사용하여 다른 접근법을 보았습니다. 더 이상 있습니까?유닉스에서 두 파일 간의 차이점을 찾는 가장 빠른 방법은 무엇입니까?

예 : Compare two files line by line and generate the difference in another file

예 : Copy differences between two files in unix

나는 모든 차이를 발견하고 아래 각 경우의 파일에 나열의 가장 빠른 방법입니다 알아야합니다 - ..

Case 1 - file2 = file1 + extra text appended. 
Case 2 - file2 and file1 are different. 
+7

당신의 입력에 따라 달라집니다, 그것은 자신에게 시간을 보내는 것이 가장 좋습니다. – perreal

+0

사례를 구체적으로 작성하고 시도한 것의 샘플 코드를 제공 할 수 있습니까? – asf107

+1

사례 2의 경우 두 파일을 바이트 단위로 비교하는'cmp'가 있습니다. – micke

답변

39

당신은 시도 할 수는

comm -13 <(sort file1) <(sort file2) > file3 

또는

grep -Fxvf file1 file2 > file3 

또는

diff file1 file2 | grep "<" | sed 's/^<//g' > file3 

또는

join -v 2 <(sort file1) <(sort file2) > file3 
+0

예, 어느 것이 가장 빠릅니까? – Steam

+1

큰 텍스트 파일 두 개를 사용하여 처음에 추가 텍스트 단락이있는 경우, 나는 네 가지 방법 모두를 시간 측정했습니다. grep, diff 및 join 메서드는 모두 추가 단락을 찾지 못했습니다. diff 메소드는 "<"이외에도 grep ">"작동해야합니다. 나는 grep이나 join 메소드에 익숙하지 않다. 그 결과 : comm : 3.661s, grep : 0.035s, diff : 0.051s, join : 3.811s –

+1

@ JasonHartley 생명의 친구를 사귀면 그 명령을 쓸 수있는 방법이 많이 있습니다. 또한 당신이 회피하는 대답은 내가 몇 가지를 제공 한 명령을 가지고 있습니다. – danmc

1

또한, MD5 해시 금액을 포함하도록 시도 할 수 또는 전혀 차이가 있는지 유사한 결정 않습니다. 그런 다음, 단지 서로 다른 해시를 가진 파일을 ... 비교

+0

어떻게해야합니까? – Steam

+0

하지만 두 파일을 비교하는 것보다 두 파일을 더 빨리 해싱합니까? –

8

또 다른 옵션 :

sort file1 file2 | uniq -u > file3 

그냥 중복 된 항목은 "UNIQ는 -d"옵션 사용을 참조하십시오 :

sort file1 file2 | uniq -d > file3 
0

빠른 작업 :

사례 1 - File2 = File1 + 추가 텍스트가 추가됩니다.

그렙 -Fxvf File2.txt은 File2.txt >> File3.txt

파일 1 : 80 라인 파일 2 : 100 선 파일 3 : 20 라인이 이후

관련 문제