awk - 多列文件中的加法和除法

awk - 多列文件中的加法和除法

我有一个输入文件,例如 -

ABC 1 2  
DEF 3 4  
ABC 4 8    
DEF 7 1 

预期输出是将第一列分组并将第 2 列和第 3 列中的值相加。然后将第 2 列和第 3 列中的值相除并将结果存储在第 4 列中。

ABC 5 10 0.5   
DEF 10 5 2  

我们将非常感谢您的提示。

答案1

awk '{r[$1]+=$2;R[$1]+=$3}END{for(i in r){print i" "r[i]" "R[i]" "r[i]/R[i]}}'

读作:

  • 对于每一行,将第一列存储$1为 中的索引r,并将列的累积 ( +=) 总和存储$2为 中的值r,并对$3中的列执行同样的操作R
  • 当所有行都已读取 ( END) 后,打印每个$1组的i总和$2( r[i]) 、总和$3( R[i]) 以及最后的∑($2)比率∑($3)

相关内容