在unix中打印一个非常大的数字

时间:2014-11-24 12:40:02

标签: awk largenumber

我有一个不寻常的问题,我不知道如何解决 我有一个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

我担心的是我希望输出编号完全显示而不是曝光格式

2 个答案:

答案 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