今まで,「入力された行は$0に格納される」と説明してきた。AWKでは,入力された行全体が$0に格納されると同時に,空白で区切られたフィールドの内容が$1$2,...に格納される。

 1行に2種類のデータが入っている二番目のデータファイルのような場合,1行目は「1 11」であるので,$0=“1 11”,$1=“1”,$2=“11”となるのである。そこで,二番目のデータファイルを処理するためには以下のようなスクリプトが可能である。


#!/usr/local/bin/gawk -f

{
	data[FNR] = $1
}

END {
	for (i = 1; i <= FNR; i++) {
		mean += data[i]
	}
	mean /= FNR

	for (i = 1; i <= FNR; i++) {
		variance += (data[i]-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
}

data[FNR] = $1
の部分を
data[FNR] = $2
に変えると,2番目のデータについての平均値等を求めることができる。しかし,毎回毎回このようにして3番目のデータについて,4番目のデータについて,...とやっていくのはたいへんだ。
●前へ戻る   ●次へ進む
Last modified: May 15, 2002

E-mail to Shigenobu AOKI