ウェブサーバから配信するファイルの拡張子のパターンが変わることを検知して、何かの予測に使えないかと思ったので、スクリプトを書いてみるテスト。
実行すると、こうなる。
$ cat access.log | head -1000 | ./count_ext_size.awk #share count ext sizetotal 32.9% 329 js 5491681 26.8% 268 html 1814632 20.1% 201 css 433080 3.8% 38 gif 215811 0.4% 4 png 5964 0.3% 3 php 1584 0.2% 2 pdf 116571 0.1% 1 txt 988
#!/usr/bin/awk -f # # count_ext_size.awk { # apache commons を想定して書いてます。 # ログフォーマットが違う場合はここらへんで前処理します。 url=$7 size=$10 } { # ファイル名とURL のいずれの文字列でも検知できるようにしています。 match( url, /^((https?):?\/\/[a-zA-Z0-9\.\-]+?)?(\/[a-zA-Z0-9\/\$\-_\.\+\!\*\'\(\)\,%]+?)(\.([a-zA-Z0-9\/\$\-_\.\+\!\*\'\(\)\,%]+?))([\?#;].+)?$/, urlmatch ) # 拡張子が不明な場合は "html" と仮定します。 if ( urlmatch[5] == "" ) { urlmatch[5] = "html" } count_ext[urlmatch[5]]++; size_ext[urlmatch[5]]+=size next } END { print "#share\tcount\text\tsizetotal" for ( i in count_ext ) { printf "%3.1f%%\t%d\t%s\t%d\n", 100*count_ext[i]/NR, count_ext[i], i, size_ext[i] | "sort -nr" } }