2개의 파일이 있습니다.
File1에는 400,000개의 디지털 레코드가 있습니다. 예를 들어:
1
2
3
4
5
6
..
등.
파일 2에는 420k 디지털 레코드도 있습니다. 예를 들어:
1
2
3
4
6
..
등.
두 파일 모두 정렬되지 않았습니다. 두 파일을 일치시켜 차이점을 인쇄하고 싶습니다.
diff
, comm
, , 를 사용하려고 하면 grep
시간이 오래 걸립니다(1시간 이상). 이것은 나에게 가능하지 않습니다.
이 작업을 더 빠르게 수행하려면 어떻게 해야 합니까(차이점을 일치시키고 인쇄합니까).
저는 HP-UX를 사용하고 있습니다.
답변1
천만 줄 파일의 결과는 다음과 같습니다.
seq 10000000 |
tee a |
awk 'rand() < 0.05 {print int(1000000 * rand())}; 1' > b
모두:
diff a b | wc -l
comm -3 <(sort a) <(sort b) | wc -l
(ksh/bash/zsh 구문)
cmp -l a b | wc -l
3년된 저가형 PC(리눅스 구동)에서는 30초도 안 걸렸습니다.
diff
내용에 따라 diff
삽입, 삭제, 변경 등을 감지해야 하는 알고리즘이 데이터의 배치 방식에 영향을 받기 때문에 편차가 클 수 있지만, 다른 알고리즘과 크게 달라지지는 않습니다.
정확히 무엇을 시도하셨나요?