taro 90.3 jiro 62.8 saburo 21.1 shiro 28.0 goro 40.5 kenji 37.9 takashi 55.1 masao 71.3このファイルで、各行を「レコード」、空白で区切られた1つ1つの要素を 「フィールド」と呼びます。
{print $2}ファイルを作ったら、次のように実行してみましょう。
awk -f sample.awk < sample.datこんな結果が出ると思います。
90.3 62.8 21.1 28.0 40.5 37.9 55.1 71.3では、こんどはスクリプトをこう直してください。
{print $2 " " $1}こうなりましたか?
90.3 taro 62.8 jiro 21.1 saburo 28.0 shiro 40.5 goro 37.9 kenji 55.1 takashi 71.3 masao
{ printf("%5.2f %s\n", $2, $1) }結果はこうです。
90.30 taro 62.80 jiro 21.10 saburo 28.00 shiro 40.50 goro 37.90 kenji 55.10 takashi 71.30 masao
BEGIN { print "30点以下の人は追試です" } $2 < 30 { printf("%5.1f %s 追試!!\n", $2, $1) } $2 >= 30 { printf("%5.1f %s\n", $2, $1) } END { print "以上。" }結果はこうです。
30点以下の人は追試です 90.3 taro 62.8 jiro 21.1 saburo 追試!! 28.0 shiro 追試!! 40.5 goro 37.9 kenji 55.1 takashi 71.3 masao 以上。
BEGIN {total = 0} {total += $2} END {print total / NR}結果はこうです。
50.875
UNIX 上の便利なインタプリタとしては awk の他にも csh, perl, tcl/tk など があり、それぞれ目的も使い方も異なります。 機会があればいろいろ勉強してみてください。