gzやtar.gzに固められたログをgrepする
Apacheのアクセスログをgrepしようと思ったら、logrotateされたログがgzで固められてました。1個1個はless
で中を見れるけど、全ファイルからgrep
は出来ません。開いてはファイル内検索して回るのは、さすがにめんどすぎるので、調べました。
gzの場合
$ zgrep "foo" access_log.2.gz $ gzip -c access_log.2.gz | grep "foo"
-c
オプションは--stdout
で、解凍結果を標準出力にだします。
$ ls -r | xargs zgrep "foo"
ログファイル全部からgrepするにはこうなります。って、通常のコマンドにz
つけただけだね。logrorate前のaccess_log
だけはgz圧縮されてないけど、zgrep
で問題なく調べられます。
tar.gzの場合
$ tar -O -xzvf bar.tar.gz | grep 'foo'
gzip
と違い-O
オプションが--stdout
で、解凍結果を標準出力にだします。実はtar.gzの例はついでに見かけただけなので、zgrep
が対応してるのかとか、確認してません。
zipの場合
zipgrep
ってのがあるみたい。