クマの手も借りたい
茶トラネコ(@kumanotemo)です。上場を控えたITベンチャーを2社も退職してフリーランスの道を選んだ放浪エンジニアです。
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 で十分可能です。

現場のプロから学ぶSEO技術

SEO について詳しくないけどこれから学んでみたい方。

これまでの小手先の SEO に対する技術には詳しいけど、マーケティングやソーシャル要素を組み合わせた今時の SEO をもう一度勉強してみたい方にオススメです。

あなたにオススメ