logの解析-特定列カウント編

AKB48特集
北原里英さんです。
たしか家族ゲームというドラマにでていて、自分はそのドラマが好きで、
感想板にかきこんじゃったりしちゃいました。

その中でも、けつの軽そうな女子高生役をやってて、しっくりきてました。か?
(最終的には、そこまでrya

ブスとか言われてますが、ぼてっと唇いいと思います。

f:id:linesnova:20140711143144j:plain


今回は、log解析です
いままで自分

  grep "error" hoge.log

とか書いていましたが、もっと便利なのがありました。

その前にちょいテクとして、タブ区切りの場合

  grep "error<tab>2014" hoge.log

みたいな場合、「control-V+tab」になります。

では、本題です。
awk(オーク)です。
やりたいことは、特定列に登場する同一文字列のカウントをするです。

less hoge.txt | awk '{ h[$8]++ } END { for(k in h) print h[k], k }' | sort -nr

このようなログがあったとするとhhxxの列=$8をカウント対象とします。

aa bb cc dd ee ff gg hh0 ii jj kk
aa bb cc dd ee ff gg hh2 ii jj kk
aa bb cc dd ee ff gg hh1 ii jj kk
aa bb cc dd ee ff gg hh1 ii jj kk

では、これを実行してみましょう。今回は、ヒアドキュメントをつかって、ファイルがなくてもできるやり方で試します。

cat <<EOT | awk '{ h[$8]++ } END { for(k in h) print h[k], k }' | sort -nr
> aa bb cc dd ee ff gg hh0 ii jj kk
> aa bb cc dd ee ff gg hh2 ii jj kk
> aa bb cc dd ee ff gg hh1 ii jj kk
> aa bb cc dd ee ff gg hh1 ii jj kk
> EOT
2 hh1
1 hh2
1 hh0
#下3行は出力結果です。