awkと出会って人生変わりました

ざっくり

  • awkは1行ずつ読み込んで処理を行う
  • excelを使わなくても簡単な集計はできる
  • なんでもawkでやりたくなる

基本

awk '命令' ./filename

あるいは、他のコマンドの標準出力をうけて、

xxxxxx | awk '命令'

命令の中身

大きく3種類のアクションに分かれる
  • BEGIN
  • END
  • その他
これらを、

awk 'BEGIN{   .....     } {    ....    } /regex/{    ....    } END{     ....    }'

のように使う

BEGINアクション

  • 一番最初に呼ばれる
  • まだ各行の処理に入らない

ENDアクション

  • 一番最後に呼ばれる
  • 最終行が処理された後

その他のアクション

  • /  /で囲った正規表現にヒットする行にのみ処理を実施
  • /  /を省略したらすべての行に対して処理を実施

ざっくり文法

  • 雰囲気でいける

平均値


cat morgan.log | awk '{sum+=$9} END{print sum/NR}'

サンプルデータ
172.18.0.1 - GET /api_v1/issue/information HTTP/1.0 200 446 - 38.758 ms
172.18.0.1 - GET /api_v1/issue/information HTTP/1.0 500 137 - 108.080 ms
172.18.0.1 - GET /api_v1/issue/information HTTP/1.0 200 446 - 35.086 ms
172.18.0.1 - DELETE /api_v1/exchange/book HTTP/1.0 400 90 - 24.319 ms
172.18.0.1 - DELETE /api_v1/exchange/book HTTP/1.0 400 90 - 20.382 ms