如何用awk格式化并计算数据?求合并计算结果至原数据的方案
解决方案
可以用单条awk命令同时完成原数据输出和结果计算,无需拆分两次执行。执行以下命令即可得到符合要求的输出:
awk '{print $0; a += $1*$3; b += $2*$3} END {printf "%-8s %-8s\n", a, b}' data.test
命令逻辑说明
- 处理每一行数据时,先通过
print $0输出原始行内容 - 同步累加计算:
a:第一列与第三列的乘积之和(对应需求中的a值)b:第二列与第三列的乘积之和(对应需求中的b值)
- 所有行处理完成后,在
END块中用printf格式化输出a和b,通过%-8s控制字段宽度,保证和原数据的列对齐效果一致
执行结果
运行上述命令后,输出将完全匹配期望格式:
1 2 1.07 1 1 0.51 1 2 0.54 2.12 3.73
如果需要固定小数位数(比如保留两位),可以修改END块的printf语句:
awk '{print $0; a += $1*$3; b += $2*$3} END {printf "%.2f %.2f\n", a, b}' data.test
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

