N = 10 Mean = 5.5 Variance = 8.25 S.D. = 2.87228のような表示が得られる。これでもけっして悪くはないのだが,以下のように桁を揃えて表示したいこともある。
N 10 Mean 5.500000 Variance 8.250000 S.D. 2.872281桁を揃えたいときは,以下のようにする。
#!/usr/local/bin/gawk -f { data[FNR] = $0 } 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 }
printf "N %15.7g\n", FNRは printf文 というもので,今までにでてきた print文 とは見かけが似ている。 しかし,printf の次にある,
"N %15.7g\n"はダブルクオートの内容をそのまま表示するのではなく,これ以降の表示要素をどのように 表示するかという「書式」を表す。書式の重要な部分は %15.7g である。これは,「この位置に15桁を取り,有効数字7桁の数値を表示する」ことを意味している。表示される対象は FNR である。 しかし,このスクリプトによる表示は,
N 10 Mean 5.5 Variance 8.25 S.D. 2.872281のようになる。 %15.7g という書式は,小数点以下の桁の余分な0を出力しないのである。