grep -v -f 속도를 높이는 방법이 있습니까?

grep -v -f 속도를 높이는 방법이 있습니까?

파일이 2개 있고 A에는 600만 개의 행이 있고 B에는 500만 개의 행이 있습니다. A에서 행을 가져오려고 하는데 B에서 누락되었지만 grep -v -f B A속도가 매우 느립니다. 속도를 높일 수 있는 방법이 있나요?

답변1

두 파일이 모두 이미 정렬되어 있는 경우(현재 파일과 동일한 로케일) 이 명령을 사용하십시오.

comm -23 A.txt B.txt

정렬되지 않았고 쉘이 ksh 스타일 프로세스 대체를 지원하는 경우:

(export LC_ALL=C; comm -23 <(sort A.txt) <(sort B.txt))

( LC_ALL=C결정적(그리고 빠른) 정렬 순서를 얻습니다.)

파일 정렬이 필요하지 않은 combine유틸리티 도 참조하세요.moreutils

combine A.txt not B.txt

그러나 전체 파일을 메모리에 로드한다는 점에 유의하세요.

답변2

나처럼 file1과 file2에 동일한 줄이 없지만 file1에 grep하려는 문자열이 포함되어 있는 파일에서 줄을 grep해야 하는 경우 를 사용할 수 sort있습니다 join.

관련 정보