zgrepは最近圧縮されていないファイルを再利用しますか?

zgrepは最近圧縮されていないファイルを再利用しますか?

zgrepディレクトリのforループで* .gzファイルを呼び出します。

ログファイルが大きいため(それぞれ約1 GB、約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.*

おすすめ記事