読者です 読者をやめる 読者になる 読者になる

webネタ

技術系ブログ。web系SE。1988。♂。@rhong_

awkコマンドが便利すぎてやばい

awkコマンドは、簡単にテキストの抽出や演算などができる便利なlinuxコマンドです。

最近よく使うのでメモ。

いくつか例を。

サンプルのテキスト /tmp/test

[2010-3-24 23:06:00] 1000 
[2010-3-24 23:06:00] 1100
[2010-3-24 23:06:00] 1200
[2010-3-24 23:06:00] 1300

1100より大きいものを取得

awk '{if ($3 > 1100) print $0}' /tmp/test

結果

[2010-3-24 23:06:00] 1200
[2010-3-24 23:06:00] 1300

合計を出す

awk 'BEGIN {total = 0} {total += $3} END {print total}' /tmp/test

結果

4600

処理の手順は、BEGIN{}を実行。次に{}。最後にEND{}とても分かりやすい(・ω・`b
なので、この例だとtotal変数に0を入れて初期化。全行totalに値を加算。最後にtotalを出力。
そのまんまですね。。

平均を出す

awk 'BEGIN {total = 0} {total += $3} END {print total / NR}' /tmp/test

結果

1150

NRが行数のカウントをあらわしてます。単純に全部足して最後にカウントで割っただけですね。。。


ちょっとした作業ならとっても便利に使えるawk
よくできてるわぁ。。