gzファイルをgrepで文字列検索する

過去のログファイルをgrepで検索する機会が多いと思いますが、ログファイルのファイルサイズの容量を小さくする為に「gzファイル」で圧縮されているケースがあります。今までは下記のように、zcat で展開してからgrep していました

$ zcat access.log-20230401.gz | grep "error"

一度、zcatでファイルを展開してから、パイプで繋いてgrep しています。通常のgrepと比較するとコマンドが少し長くなるので、grepのオプションで圧縮ファイルをgrepできないか調べてみると「zgrep」というコマンドがありました

このコマンドは、gzip圧縮されたファイルを展開してそのファイルに対してgrepコマンドを実行できるコマンドです。使い方はgrepと同じで下記のように使います

書式:zgrep [OPTIONS] PATTERN [FILE…]

$ zgrep "error" access.log-20230401.gz