zgrep
ディレクトリのforループで* .gzファイルを呼び出します。
ログファイルが大きいため(それぞれ約1 GB、約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.*