1개의 이메일 파일(460만 라인)이 있습니다. 또 다른 이메일 파일(1억 라인)이 있습니다.
100m 줄이 있는 파일에 4.6m 줄이 몇 개나 나타나는지 확인하고 싶습니다.
나는 이것을 조사하고 다음을 시도했습니다:
"grep -f file1 file2 > output.txt" < 소용이 없습니다.
"grep -wFf file1 file2 > output.txt" < 소용이 없습니다.
나는 이를 위해 Cygwin을 사용하고 있으며 위의 두 명령은 모두 "실행"(오류 메시지 없이)된 다음 X 시간 후에 완료되고 "output.txt"에 아무 것도 출력되지 않습니다.
답변1
comm -12 <(sort file1) <(sort file2) | wc -l
설명하다
comm -12 foo bar
foo
: 파일과 에서 일치하는 줄을 찾지bar
만 파일을 정렬해야 하므로,<(sort file1)
각 파일은 으로 전송되기 전에 정렬됩니다comm
.| wc -l
: 일치하는 줄을 인쇄한 후 에 파이프하면wc
줄 수를 계산합니다.
경고하다
그러면 정확히 일치하는 행이 검색됩니다. 일관되지 않은 줄 바꿈 등으로 인해 줄이 일치하지 않을 수 있습니다.