grepでアンマッチ(ファイル編)
※実経験の記憶を頼りに自宅の PC 環境(VMWareなど)で再現している内容もあるのでご注意下さい
2007-06-10
今日は自分のサイトのアクセスログ解析をしてみました。アクセスログはレンタルサーバ上の管理ツールで確認できるので、それをコピーして、ローカル PC にテキストで保存します。
アクセスログは半月で 43000 行程度。この中には画像ファイルやテキストファイルなどのアクセスも含まれるので、それらは除外したい。また、各サーチエンジンのロボットも除外しないと、本当の一般ユーザーのアクセスがわかりにくい。
今回、ログ解析には grep コマンドを利用しますが、Perl で 1 行ずつ見ていった方が早いのかな。下記のコマンドで「.gif」を含む文字列の行を除外することができます。(grep の -v)
$ grep -v '.gif' acc.txt
これをパイプで繋げば、複数の単語を除外できますが、それだとダサダサですね。ってことで、grep の -f オプションを利用して、マッチさせたくない単語をファイルに 1 行ずつ書いておきます。
$ cat unmatch.txt (一部だけ表示) .jpg .jpeg .gif .ico .css .txt .rdf Googlebot Slurp msnbot
あとは、このファイルを利用して抜き出します。
$ grep -v -f unmatch.txt acc.txt
さらに、この中から、各コンテンツごとにアクセス数を算出する場合は、Perl などのスクリプトでやった方が効率がいいですね。とりあえず、ざっとログを解析するにはシェルの grep や awk で十分可能です。
関連記事
上記の記事に関連する記事(最新の10件)です。


