zgrep은 최근에 압축되지 않은 파일을 재사용합니까?

zgrep은 최근에 압축되지 않은 파일을 재사용합니까?

zgrep디렉토리의 for 루프에서 *.gz 파일을 호출합니다 .

로그 파일이 크기 때문에(각각 약 1GB, 약 30개 파일) 이 명령은 시간이 오래 걸립니다.

/tmpzgrep이 생성하는 폴더에 여러 개의 압축되지 않은 파일이 있습니다.

zgrep압축되지 않은 자체 파일을 재사용 할 수 있는지 궁금합니다 . 아니면 매번(예: for 루프의 다음 반복) 압축을 풀까요?

스크립트는

#!/bin/bash

while read -r request;
do
    zgrep $request */log.prefix.* | grep ..... <complex command>
read < /tmp/allRequestIds.txt

zgrep 최적화에 대한 팁이 있나요?

답변1

zgrep PATTERN FILE본질적으로 동일 zcat FILE | grep PATTERN하거나 약간의 변형이 있습니다. 루프에서 실행하면 이전에 압축되지 않은 파일을 재사용하지 않습니다.

처리 속도를 높이기 위해 zgrep파일에서 직접 패턴을 읽을 수 있습니다 /tmp/allRequestIds.txt.

zgrep -f /tmp/allRequestIds.txt */log.prefix.*

정규식 일치 대신 고정 문자열 패턴 일치를 원하는 경우 다음을 사용할 수도 있습니다 -F.

zgrep -F -f /tmp/allRequestIds.txt */log.prefix.*

답변2

노력하다ripgrep호환되는 구문을 가지고 grep있으며 다음과 같이 작성되었기 때문에 더욱 강력합니다.그것은 기반으로 만들어졌습니다Rust용 정규식 엔진유한 오토마타, SIMD 및 공격적인 텍스트 최적화를 사용하여 검색 속도를 매우 빠르게 만듭니다. 조사하다자세한 분석은 여기를 참조하세요.

사용 예:

rg -z "pattern" .

-z/ 압축 파일( , , 및 ) --search-zip을 검색합니다 .gzbz2xzlzma

관련 정보