圧縮ファイルをcat、grepする方法

LinuxやUNIXを使っていれば、ログを見る際にgrepを行う事が多いだろう。
ログの場合、容量の関係からテキストファイルではなく、tarやzipで圧縮したファイルを読む対応が必要になる事がある。

今回は、そんな時に使える、圧縮ファイルを直接grepする方法について記述する。

1.gzの場合

.gzファイルをcatする場合、zcatコマンドを用いる。

zcat 参照したいgzファイル

.gzファイルにgrepする場合は、grepコマンドにオプションを付与するのではなく、zgrepコマンドを用いる。

zgrep 検索したい文字列 検索したいgzファイル

2.tar.gzの場合

.tar.gzファイルをcatする場合、zcatコマンドを用いるか、もしくはtarコマンドを用いて参照する方法がある。

zcat 参照したいtar.gzファイル
tar -O -xzvf 参照したい.tar.gzファイル

.tar.gzファイルをgrepする場合、一度tarコマンドで参照を行い、その結果をgrepすることで確認出来る。

tar -O -xzvf 検索したい.tar.gzファイル | grep 検索したい文字列

3.zipの場合

.zipファイルをcatする場合、zcatコマンドを用いる。

zcat 参照したいzipファイル

.zipファイルをgrepする場合、zgrepコマンドを用いる。

zgrep 検索したい文字列 検索したいzipファイル

結論

圧縮ファイルを参照する場合は、zcat一つでどうにかなるようだ。
grepの時だけ、tar.gzの場合はzgrepでgrepすることが出来ないようだ。