2番目のデータの平均値などを求めるためのスクリプトを示す。
#!/usr/local/bin/gawk -f { for (j = 1; j <= 2; j++) { data[FNR,j] = $j } } END { for (i = 1; i <= FNR; i++) { mean += data[i,2] } mean /= FNR for (i = 1; i <= FNR; i++) { variance += (data[i,2]-mean)^2 } variance /= FNR sd = sqrt(variance) printf "N %15.7g\n", FNR printf "Mean %#15.7g\n", mean printf "Variance %#15.7g\n", variance printf "S.D. %#15.7g\n", sd }
{ for (j = 1; j <= 2; j++) { data[FNR,j] = $j } }の部分は,入力された行に含まれる2つの数値を二次元の配列dataに格納している。 data[FNR,j] = $j はfor文に囲まれているので,jが1,2に対してそれぞれ,
data[FNR,1] = $1 data[FNR,2] = $2となることがわかる。この例に示すように,入力された行の,空白で区切られたフィールドの値は$1,$2 などのような変数に格納されるが,$変数名 のようにすれば,変数が持つ値によりそれに対応するフィールドの値を指すことになる。
a1 b2 c3 d4 e5で,x=4のとき,$xは4番目のフィールドを指すので,$xの内容は“d4”という文字列である。
格納された値は後で,mean += data[i,2] や variance += (data[i,2]-mean)^2 のようにして使われる。