クマの手も借りたい
馬とテニスとリラックマが好きな IT 系のエンジニアです。
Linux

grepでアンマッチリストをファイルで管理する

10 年くらい前の出来事。

ある日、自分のサイトのアクセスログ解析をしてみました。

アクセスログはレンタルサーバ上の管理ツールで確認できるので、それをコピーしてローカル PC にテキストで保存します。

アクセスログは半月分で約 43000 行。

この中には画像ファイルやテキストファイルなどのアクセスも含まれるので、それらは除外したい。

また、各サーチエンジンのロボットも除外しないと、本当の一般ユーザーのアクセスがわかりにくい。

そんな格闘のある日・・・。

grepで必要な情報の抽出

今回、ログ解析には grep コマンドを利用します。

Perl で 1 行ずつ見ていった方が早いのかな?なんて悩んだりもしたけど grep で事足りるならそれでよし。

下記のコマンドで「.gif」を含む文字列の行を除外することができます。(grep の -v オプション)

$ grep -v '.gif' [ファイル名]

これをパイプで繋げば、複数の単語を除外できますが、それだとダサダサですね。

$ grep -v '.gif' [ファイル名] | grep -v '.jpg' | grep -v '.png'

除外リストの使用

grep の拡張版の egrep を使う方法もありますが、これも除外するワードの量次第といったところなので今回は却下。

ってことで、grep の -f オプションを利用して、マッチさせたくない単語をファイルに 1 行ずつ書いておきます。

$ cat unmatch.txt

(一部だけ表示)
.jpg
.jpeg
.gif
.ico
.css
.txt
.rdf
Googlebot
Slurp
msnbot

あとは、このファイルを利用して抜き出します。

$ grep -v -f unmatch.txt [ファイル名]

さらに、この中から、各コンテンツごとにアクセス数を算出する場合は、Perl などのスクリプトでやった方が効率がいいですね。

とりあえず、ざっとログを解析するにはシェルの grep や awk で十分可能です。

Web API The Good Parts

オライリーの「Web API」に特化した本です。最近の多くの Web サービスは API が活用されていますが、その技術はこれまでの Web サイトとそれほど大きく変わりません。

今後、マイクロサービス化が進む中で知っておいて損はない内容が詰め込まれており、現場のエンジニアやこれから Web 系のエンジニアを目指す人にもオススメの一冊です。

created by Rinker
¥2,376
(2018/09/21 11:58:20時点 Amazon調べ-詳細)

あなたにオススメ