awk将表中所有行与表的第一行相乘

时间:2017-07-04 14:09:57

标签: awk

我有一个包含多个列的表,我希望将表中的所有行与第一行的值(逐列)相乘。

表:

0,140   0,130   0,140   0,150   0,160 <- values to be used for multiplication
1,270   1,190   6,080   3,760   2,810
1,290   1,140   6,110   3,900   3,050
1,370   1,160   6,310   4,030   3,020
1,370   1,150   6,500   3,970   3,070

结果:

0,178   0,155   0,851   0,564   0,450
0,181   0,148   0,855   0,585   0,488
0,192   0,151   0,883   0,605   0,483
0,192   0,150   0,910   0,596   0,491

我对awk有一些经验,但我无法找到解决方案。

1 个答案:

答案 0 :(得分:1)

$ awk 'NR==1{split($0,m);CONVFMT="%.3f";next} {for (i=1;i<=NF;i++) $i=$i*m[i]} 1' file
0.178 0.155 0.851 0.564 0.450
0.181 0.148 0.855 0.585 0.488
0.192 0.151 0.883 0.605 0.483
0.192 0.149 0.910 0.596 0.491

我在示例中使用了.而不是, s作为我的语言环境用于小数点的内容。