我有一个文本文件,在第二栏中有数字,数字有千位分隔符和十进制分隔符:
2014-01 2,277.40
2014-02 2,282.20
2014-03 3,047.90
2014-04 4,127.60
2014-05 5,117.60
我需要对数字求和,但是以下awk
语法不起作用:
awk '{X=X+$2} END {print X}' file
它返回16
,这显然是错误的。我怎样才能知道awk
将其读取为2277.40
而不是2,277.40
?
请注意,尽管在将值添加到总计之前需要从输入中除去逗号,但是awk
很高兴在有或没有千位分隔符的情况下打印结果。例如,如果您使用以下代码:查看fmt
代码中定义的变量。
您的输入:
$ cat file
2014-01 2,277.40
2014-02 2,282.20
2014-03 3,047.90
2014-04 4,127.60
2014-05 5,117.60
Awk代码:
$ awk '{gsub(/,/,"",$2);sum+=$2}END{printf(fmt,sum)}' fmt="%'6.3f\n" file
结果:
16,852.700
如果你想尝试这个上Solaris/SunOS
系统,改变awk
这个脚本的开始/usr/xpg4/bin/awk
,/usr/xpg6/bin/awk
或nawk
。
希望这会有用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句