我有一个不寻常的问题,我不知道如何解决
我有一个awk脚本来计算不同元素的总和但最后我有一个非常大的数字作为结果(这是正常的)但我关心的是如何显示数字1.84745e+09
。
任何想法都可以获得“正确”的形式,例如我的意思是182739293747493274
例如这是我正在使用的awk代码
awk -F, 'FNR==1 {header=$0; next} {a[$1]+=$6+$14} END {for (i in a) {print i, a[i]; tot+=a[i]} print "TOTAL", tot}' CAS01.txt CAS02.txt CAS03.txt
这里输出我有
20140201 -5.04108e+08 20140202 -5.74709e+08 20140228 -7.68633e+08 TOTAL -1.84745e+09
我担心的是我希望输出编号完全显示而不是曝光格式
答案 0 :(得分:1)
GNU Awk的扩展名-M
提供了arbitrary-precision integer arithmetic。
如果你不能使用GNU Awk,并且你的Awk没有类似的扩展名,你将不得不切换到一个工具(bc
想到,或尝试Perl;有一个工具Perl发行版中的a2p
将Awk脚本转换为Perl代码。)
答案 1 :(得分:0)
您可以使用printf而不是print。
示例:
sdlcb@ubuntu:~/AMD_C$ echo 12.3456 | awk '{printf ("%2.4e\n", $1)}'
1.2346e+01
sdlcb@ubuntu:~/AMD_C$ echo 12.3456 | awk '{printf ("%2.4f\n", $1)}'
12.3456