it-swarm-ko.tech

두 개의 큰 텍스트 파일을 비교

두 개의 큰 파일이 있습니다 (각 6GB). 줄 바꿈 (\n)를 구분자로 사용합니다. 어떻게 차이점을 알 수 있습니까? 24 시간 미만이 소요됩니다.

34
jonasl

가장 확실한 대답은 diff 명령을 사용하는 것이며 --speed-large-files 매개 변수를 추가하는 것이 좋습니다.

diff --speed-large-files a.file b.file

분류되지 않은 파일을 언급하므로 먼저 파일을 정렬해야 할 수도 있습니다.

sort a.file > a.file.sorted
sort b.file > b.file.sorted
diff --speed-large-files a.file.sorted b.file.sorted

두 번째 정렬 출력을 직접 diff로 파이프하여 추가 출력 파일 작성을 저장할 수 있습니다

sort a.file > a.file.sorted
sort b.file | diff --speed-large-files a.file.sorted -

분명히 이것들은 사용 가능한 메모리가 많은 시스템에서 가장 잘 실행되며 충분한 여유 디스크 공간이 필요할 것입니다.

당신이 전에 이것을 시도했는지 여부는 당신의 질문에서 명확하지 않았습니다. 그렇다면 무엇이 잘못되었는지 아는 것이 도움이 될 것입니다 (너무 오래 걸리는 등). 나는 항상 파일 정렬과 diff 명령이 다르게 작동하는 것을 가능하게하는 파일의 도메인 특정 속성이 없다면 사용자 정의 명령뿐만 아니라 최소한 명령을 수행하는 경향이 있음을 발견했습니다.

47
Richm

입력을 정렬하고 diff 프로그램에 입력을 정렬하면 큰 속도를 낼 수 있습니다. 나는 diff와 같은 옵션을 알지 못하지만 comm는 정렬 된 입력을 가정하고 목적에 충분하면 훨씬 빠릅니다.

5
Karl