27.5.3 時間毎のアクセス数を数える

今度は,時間毎のアクセス数を数えてみます. 次のような内容のプログラムを作ってください. 名前は time.awk にしましょう.

{
    split($4, dates, /:/); 
    # 13/Sep/2004:12:00:21 --> 13/Sep/2004, 12, 00, 21
    hour = dates[2];
    access[hour]++;
}

END{
    for(item in access){
        print item "\t" access[item];
    }
}

プログラムの解説

このプログラムを実行するときは

promptawk -f time.awk 24Mar | sort return2

のようにします.すると,

00      9541
01      7557
02      4689
03      3270
04      1850
05      1162
06      1409
07      1355
08      2460
09      3178
10      4587
11      6426
12      5787
13      6801
14      5427
15      5988
16      6300
17      6479
18      7199
19      5221
20      3638
21      6498
22      6812
23      8464

のように時間毎のアクセス数を表示することができます.

練習

こんどは,あなたの(または友人知人)の時間毎のアクセス数を表示しましょう (今のプログラムは,全体のアクセスを数えるものでした). それには,今のプログラムと以前作ったプログラムと組み合わせます. 例えば g999999 さんのアクセス数を数える場合は次のようになります.

promptawk -f g999999.awk 24Mar | awk -f time.awk | sort return2

パイプによるコマンド組み合わせについては, related_s28.1 フィルタで詳しく述べてありますが, ここでは簡単に,最初に g999999.awk で g999999 さんの行を選んだ後, count.awk で数を数えると考えてください.