我一直在对 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
result:
sum: 6557076.288
Note
- 这应该适用于动态数量的列,但恰好是两行
- 输出格式是
%.3f
,如果你愿意的话可以改变它
- 代码可以缩短,因为有两个类似的 for 循环结构
EDIT
根据 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
非常好的建议,我没想到分裂...谢谢埃德!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)