データファイルの第 n 列の平均と分散を取りたい

練習として、データファイルの平均と分散をとる awk script ファイルを示しましょう。 他の操作(相関関数を計算する)なども、 この例の応用でできます。 表題には第 n 列と書いていますが、 ここでは具体的に第 1 列の平均と分散を計算するスクリプトを示します。 なお、変数 ave と dev の初期化は必要ありませんが、 BEGIN の使い方を示すために書いているなど、 いろいろな例を示すために少々無駄な書き方をしています。 また、AWK では # より後ろはコメントになります。
----------------------------------
BEGIN{                     # データファイルを読み込む前の処理
  ave=0                    # 初期化は必要ありません
  dev=0			   # 初期化は必要ありません
}
$0!~/#/{                   # データファイルを一行ずつ処理する 
  n++
  data[n] = $1             # 第1列のデータを取り込む
}
END{                       # データファイルを読み込んだ後の処理
  # 平均の計算
  for(m=1; m<=n; m++)      # ここにくると n は総行数を表している
    ave = ave + data[m]
  ave = ave / n

  # 分散の計算
  for(m=1; m<=n; m++)
  dev = dev + (data[m]-ave)*(data[m]-ave)
  dev = dev / (n-1)

  # 結果の出力
  printf("average=%f deviation=%f\n",ave,dev)
}
----------------------------------