2014-11-24 65 views
-1

我有一个不寻常的问题,我不知道如何解决。
我有一个awk脚本来计算不同元素的总和,但最后我有一个非常大的数字作为结果(这是正常的),但我关心的是如何显示数字1.84745e+09在unix中打印一个非常大的数字

任何想法得到了“正确”的形式,像我的意思是182739293747493274例如

例如,这是我使用

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 

这里的输出awk的代码,我

20140201 -5.04108e+08 20140202 -5.74709e+08 20140228 -7.68633e+08 TOTAL -1.84745e+09 

我的问题是,我希望输出数字完全显示不是曝光格式

+1

你能不能用printf用%F? – fredtantini 2014-11-24 12:44:55

+1

你能举一个小例子,让你的问题得到转载吗? – Kent 2014-11-24 12:49:02

+0

我把这个-1.84745e + 09作为输出!我希望它显示为-1847450000 – 2014-11-24 12:56:15

回答

0

GNU Awk的扩展名为-M,它提供了arbitrary-precision integer arithmetic

如果您不能使用GNU awk和你的awk没有一个类似的扩展,你将不得不切换到一个工具,它不会(bc想到,或者尝试Perl的;还有一种是工具a2p在Perl发行版将Awk脚本翻译为Perl代码)。

0

您可以使用printf而不是打印。

例子:

[email protected]:~/AMD_C$ echo 12.3456 | awk '{printf ("%2.4e\n", $1)}' 
1.2346e+01 
[email protected]:~/AMD_C$ echo 12.3456 | awk '{printf ("%2.4f\n", $1)}' 
12.3456