我有一种情况,我想计算列的总和
SAL|CAL|TAG|VAL
12.11"|"1.1"|"2.1"|"1.1
13.11"|"1.1"|"2.2"|"2.2
14.11"|"1.1"|"2.4"|"2.4
我的下面的代码没有给出输出,输出为0.00
我需要此列CAL VAL的输出
awk -F'|' '{T+=$2} END { printf "%.2f\n", T }' demo.txt
输出 :
6.7 5.7
文件中的分隔符不一致(|
在标题行中为纯文本,但在"|"
此之后),或者分隔符一致,|
但字段引用不一致(缺少"
第一个字段的打开,最后一个字段的关闭"
)。
无论哪种方式,当您设置时-F'|'
,都会将的值$2
解析为字符串,例如"1.1"
,当您尝试对其进行加法运算时,它们会转换为数值零。
如果系统的awk版本支持字段分隔符的正则表达式,则可以改用-F'"?\\|"?'
,它允许(文字)|
具有可选的前引号和尾引号:
$ awk -F'"?\\|"?' '{T+=$2} END { printf "%.2f\n", T }' demo.txt
3.30
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句