#!/usr/local/bin/gawk -f { data[FNR] = $0 } END { for (i = 1; i <= FNR; i++) { x += data[i] } print "N =", FNR print "Mean =", x/FNR }
data[FNR] = $0の部分が変更された部分である。data[ ]というのは配列(この例の場合は,数学的にいえばベクトルといった方が適切ではあるが)を表す。配列は複数の数値をまとめて取り扱うための機構である。複数の数値は[ ]の中に書かれる「添字」で識別される。[ ]の前にあるのは配列名である。一つの変数を表すのに一つの変数名があったように,配列は配列名で識別される。
スクリプトでは,FNRが添字として使われている。データファイルの1番目の行が入力されたとき,FNRは1になる。そして,入力された内容はdata[1]に格納される。10番目に入力された内容はdata[10]に格納される。
入力が終了したとき,配列dataには10個の要素が記憶されている。
ENDパターンに対応するアクション部分では,配列dataに記憶されている数値を対象として処理することになる。
for (i = 1; i <= FNR; i++) { x += data[i] }の最初の行 for (i = 1; i <= FNR; i++) { はfor文と呼ばれるものであり,「iを1からはじめて( i = 1 ),1ずつ増やしながら( i++ ),iがFNRより小さいか等しい限り( i <= FNR ),{ }で囲った部分を実行する」という意味である。i++ は i = i+1 と同じことを表す。
繰り返される内容は,x += data[i] である。
すなわち,このfor文は x = data[1]+data[2]+・・・+data[10] の計算を行っていることになる。