[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
awk não soma decimais ...
From: |
Marcelo G. Dias |
Subject: |
awk não soma decimais ... |
Date: |
Wed, 02 Feb 2005 23:50:04 -0200 |
User-agent: |
Mozilla Thunderbird 1.0 (X11/20041206) |
Galera veja só ...
o campo 16 do arquivo teste.txt tem ...
::25.90::
::236.00::
::71.06::
::100.00::
::25.90::
Todos tem no campo 8 (01|03), então passa ser visto como números
negativos e no campo 13 todos atendem o mesmo valor ~ /03003/, desta
forma permitindo a soma {SOMA += $16}, e imprimindo somente o total ao
final, só que as casas decimais não são somadas dando o resultado de R$
-457,00 em vez de R$ -458,86 :-(
veja script ...
$ awk -F"::" '{if ($8 ~ /01|03/) $16 = -$16} {if ($13 ~ /03003/) {SOMA
+= $16}} END {printf "%10.2f \n", SOMA}' teste.txt
$ -457,00
Ps.: Uma coisa que observei é que a versão "GNU Awk 3.1.4" a saída das
casas decimais são separadas por virgula e não por ponto como no padrão
inglês, e meu arquivo esta separado por ponto e sem separador de milhar.
Ai vai a pergunta :
É possível subistituir no awk o ponto por virgula somente no campo 16,
para fazer a soma, já que o mesmo engloba as funções da família
[ef]?grep e sed ???
--
\|||||/
(o o) *** Seja Livre e evite a pirataria use GNU/Linux ***
--( )-0ooo-------------------------------------------------------
| MARCELO GIOVANNI DIAS - WEBMASTER
| E-mail: address@hidden - Site : http://www.boletim.net
-----------------------------------------------------------------
- awk não soma decimais ...,
Marcelo G. Dias <=