awkで列方向に集計する。
合計、平均、分散、標準偏差
列方向の集計やりづらいなって思ってたけど、for (i=1;i<=NF;i++)使って楽チン。
集計するファイル↓↓
hoge.txt
840 394 783 798 911 197 335 768 277 553 477 628 364 513 952 916
awkファイル↓↓
sum.awk
BEGIN { print "sum", "ave", "var", "std" } { sum=0; for (i=1;i<=NF;i++){ sum+=$i }; ave=sum/NF; varTemp=0; for (i=1;i<=NF;i++){ varTemp+=($i-ave)^2 }; var=varTemp/NF; std=sqrt(var); print sum, ave, var, std }
スクリプトの実行と結果。
awk -f sum.awk hoge.txt sum ave var std 2815 703.75 32418.2 180.051 2211 552.75 87162.2 295.232 1935 483.75 17098.7 130.762 2745 686.25 64317.2 253.608