我有一个输入文件,例如 -
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)
。