Apache などのアクセスログから、ぱっと簡単な統計を見たい時などに awk は便利です。
便利なものをメモ。
でも最近は大体 goaccess を使っている。
パスを / とすると
awk -F'[ "]+' '$7 == "/" { ipcount[$1]++ } END { for (i in ipcount) { printf "%15s - %d\n", i, ipcount[i] } }' access_log
/blog/ にマッチするものを
awk -F'[ "]+' '$7 ~ "/blog/" { ipcount[$1]++ } END { for (i in ipcount) { printf "%15s - %d\n", i, ipcount[i] } }' access_log
IP を無視するなら
awk -F'[ "]+' '$7 ~ "/" { pagecount[$7]++ } END { for (i in pagecount) { printf "%15s - %d\n", i, pagecount[i] } }' access_log
awk -F'[ "]+' '$7 ~ "/blog/" { cmd="echo " $4 " | cut -d : -f 1" ; cmd | getline abc ; close(cmd) ; pagecount[abc]++ } END { for (i in pagecount) { printf "%15s -- %d\n", i, pagecount[i] } }' access_log
対象のIPを 127.0.0.1 とすると
awk -F'[ "]+' '$1 == "127.0.0.1" { pagecount[$7]++ } END { for (i in pagecount) { printf "%15s - %d\n", i, pagecount[i] } }' access_log