スポンサーリンク
awkのワンライナーのサンプルコード
※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は先頭の文字が数字
スポンサーリンク