スポンサーリンク

awkのワンライナーのサンプルコード

※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-

awkのワンライナーのサンプルコードを書いてみたいと思います。
in.txtは、下記を想定しています。

 $ cat in.txt 
9 2 0 abc121
3 5 8 kdh34
4 9 5 89eg
2 0 8 0024hduk
2 6 0 rdw221
4 7 5 954ss

列の最大値を求める

1列目の最大値を求めるワンライナーです。

 $ cat in.txt | awk 'NR == 1{max = $1} {if($1 > max){max = $1}} END{print "max=" max}'
max=9

スポンサーリンク

列の最小値を求める

1列目の最小値を求めるワンライナーです。

 $ cat in.txt | awk 'NR == 1{min = $1} {if($1 < min){min = $1}} END{print "min=" min}'
min=2

列の総和を求める

2列目の総和を求めるワンライナーです。

 $ cat in.txt | awk '{sum += $2} END{print "sum=" sum}'
sum=29

列の平均値を求める

2列目の平均値を求めるワンライナーです。

 $ cat in.txt | awk '{sum += $2; count++} END{print "average=" sum / count }'
average=4.83333

if else 文も便利です

少々煩雑になってきますが、if else 文も便利です。

 $ cat in.txt | awk '{if($2 > 3){print $2 "は3より大きい"}else{print $2 "は3以下"}}'
2は3以下
5は3より大きい
9は3より大きい
0は3以下
6は3より大きい
7は3より大きい

正規表現

正規表現も組み合わせると、幅が広がります。
4列目の先頭の文字が数字の場合に、print出力しています。

 $ cat in.txt | awk '$4 ~ /^[0-9]/{print $4 "は先頭の文字が数字"}'
89egは先頭の文字が数字
0024hdukは先頭の文字が数字
954ssは先頭の文字が数字

スポンサーリンク