Tips: Linux のログファイルを、圧縮されてたものも、圧縮されていないものも一緒に扱う
1. はじめに
Apache2 のログファイルを、みなさんはローテーションしながら大量にためているものと思います。これを処理するときに、grep を使って絞り込むのが簡単です。ところが、圧縮されて、gz の拡張子がついているファイルと、圧縮されていないファイルとが混在するために、同じよーなスクリプトを2回書いたりしていませんか?
ChatGPTに教えてもらって解決しました。
2. 解決策
例えば、"Keyword" を含むページへのアクセスを検索するには次のようにします。
cat `ls -r access.log.1?.gz access.log.2?.gz` access.log.1 access.log | \
zgrep -v 'Applebot' |\
grep -v 'bingbot' |\
grep -v 'Googlebot' |\
grep -v 'GPTBot'
ポイントは、ログファイルを全部 cat して、パイプラインの右側で、最初だけ zgrep を使うことです。
お試しください!