2014-11-24 2 views
-1

У меня есть необычная проблема, о которой я понятия не имею, как ее решить.
У меня есть awk-скрипт для вычисления суммы разных элементов, но в конце у меня есть очень большое число в качестве результата (и это нормально), но я обеспокоен тем, как отображается число 1.84745e+09.Печать очень много в unix

Любая идея, чтобы получить «правильную» форму, как я имею в виду, например, 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 

Я обеспокоен тем, что хочу, чтобы выходной номер был полностью отображен не в формате экспонирования

+1

Не могли бы вы использовать Printf с% F? – fredtantini

+1

Можете ли вы сделать небольшой пример, чтобы ваша проблема могла быть воспроизведена? – Kent

+0

Я гой это -1.84745e + 09 как выход! Я хочу, чтобы он отображался как -1847450000. –

ответ

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 
Смежные вопросы