BASH의 외부 파일 grep -f {patternfile} {source}에서 일치하는 패턴을 찾는 더 빠른 방법

BASH의 외부 파일 grep -f {patternfile} {source}에서 일치하는 패턴을 찾는 더 빠른 방법

*nix 터미널(Bash) 운영 체제에서는 다음을 사용하는 것보다 패턴을 찾는(또는 제외 - egrep -v 옵션) 더 빠른 방법이 있습니다.

grep -f {patternfile} {source}

더 큰 파일의 경우 이 옵션을 사용하면 매우 느립니다.

답변1

패턴이 고정 문자열인 경우 다음을 살펴보세요.꽉 붙잡음(다운로드) (또는 Wu-Manber 알고리즘을 기반으로 하는 다른 일치자). 모든 패턴을 병렬로 일치시킵니다.

Wu-Manber는 일반적으로 최대 수십만 개의 패턴(한 번에 백만 개 푸시)을 처리합니다.

정규식의 경우 보편적으로 빠른 방법은 없다고 생각합니다.

답변2

검색 중인 파일 형식을 지정하지 않았지만 제가 본 검색용 다른 도구가 더 나은 성능을 제공할 수도 있습니다.ack.

단, 패턴 파일을 이용한 검색 기능은 제공하지 않습니다. 그러나 이 접근 방식을 사용하면 ack다음과 같이 여러 패턴에 대한 검색을 안내할 수 있습니다.

  $ grep -Ffx <(ack -l "pattern1" file) <(ack -l "pattern2" file)

이를 보다 다양하게 만들기 위해 Bash 스크립트에 쉽게 넣을 수 있습니다.

관련 정보