zgrep
디렉토리의 for 루프에서 *.gz 파일을 호출합니다 .
로그 파일이 크기 때문에(각각 약 1GB, 약 30개 파일) 이 명령은 시간이 오래 걸립니다.
/tmp
zgrep이 생성하는 폴더에 여러 개의 압축되지 않은 파일이 있습니다.
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
을 검색합니다 .gz
bz2
xz
lzma