我有 61 列的文件;我想计算每行的标准差(SD),忽略第一列并根据第一列打印结果,请注意,每行的列数不同,而且有些行只有值计算 SD 时不包括的第一列
input file
0.0 4 6 5 1 2 9 4 5 1 .....
0.5 3 1
1.0 3 7 8 2
1.5 3 3 3 4 6 4 5
2.0
2.5 6 7 6 9
答案1
这几乎不是一个 Linux 问题
awk 'NF>1{ s=0;s2=0;c=NF-1 ;
for (i=2; i<=NF;i++) { s+=$i ; s2+=$i*$i;}
# compute sd from c,s and s2
printf "%f\n",sqrt((s2/c)-(s/c)^2) ;}'