我一直在对一个 3 字段 x 2 行文件进行一些数学运算,如下所示:
3216.01 2724.81 1708.25
1762.48 617.436 1650.79
我的问题是我如何引用第一行的第一个字段,并且在相同的计算中,引用第二行的第一个字段?
只是为了完成:我计划取 1 美元(第 1 行)并减去 1 美元(第 2 行),然后对其他列进行平方和相同操作,最后将这个值相加。
此行符合您的要求:
awk 'NR==1{for(i=1;i<=NF;i++)a[i]=$i}
NR==2{for(i=1;i<=NF;i++)s+=(a[i]-$i)^2; printf "sum: %.3f",s}' file
结果:
sum: 6557076.288
笔记
%.3f
,你可以改变它,如果你喜欢编辑
正如 EdMorton 所建议的,上述代码可以写成:
awk 'NR==1{split($0,a)}
NR==2{for(i=1;i<=NF;i++)s+=(a[i]-$i)^2; printf "sum: %.3f\n",s}' file
非常好的建议,我没有想到分裂......谢谢Ed!
我通常会把它放在一些临时变量中
awk 'NR>1 {print $1-a} {a=$1}' inputfile