@kyanny's blog

My life. Opinions are my own.

アクセスログを awk するとき何列目が何のデータか添字を手っ取り早く数える

こういうログがあるとき、

-[3662]% cat access_log.txt
2012-02-07T09:43:06.123456+00:00 heroku[router]: at=info method=GET path="/stylesheets/dev-center/library.css" host=devcenter.heroku.com fwd="204.204.204.204" dyno=web.5 connect=1ms service=18ms status=200 bytes=13

こういう風に特定の列のデータだけ見たいけど添字を数えるのが手間なとき($10 だっけ $11 だっけ?ってなる)、

-[3660]% cat access_log.txt | awk '{print $10}'
service=18ms

こんな風にすると見やすく表示できて便利。

-[3658]% cat access_log.txt | ruby -rpp -anle 'pp (1..$F.size).to_a.zip($F)'
[[1, "2012-02-07T09:43:06.123456+00:00"],
 [2, "heroku[router]:"],
 [3, "at=info"],
 [4, "method=GET"],
 [5, "path=\"/stylesheets/dev-center/library.css\""],
 [6, "host=devcenter.heroku.com"],
 [7, "fwd=\"204.204.204.204\""],
 [8, "dyno=web.5"],
 [9, "connect=1ms"],
 [10, "service=18ms"],
 [11, "status=200"],
 [12, "bytes=13"]]