[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] awk não soma decimais ...
From: |
.:::: Marcio ::::. |
Subject: |
Re: [shell-script] awk não soma decimais ... |
Date: |
Wed, 5 Jan 2005 15:17:04 -0200 |
Em Wed, 02 Feb 2005 23:50:04 -0200
"Marcelo G. Dias" <address@hidden> digitou:
Sobre: [shell-script] awk não soma decimais ...
Oi Marcelo,
>
> 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 :-(
É porque os números estão com ".". Substiua-os por ","
utilizando o sed ou até mesmo o awk para fazer isto.
Demo:
$ echo -e "12,23\n1,34\n23,12" | awk '{ num += $0 } END
{printf "%3.7f\n", num }' -| 36,6900000
>
> veja script ...
>
>
> 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.
>
Desta versão em diante o gawk "fala" português ... ;-)
Dê uma olhada: $ awk --version
> 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 ???
Usa o sed/awk para fazer esta substituição, ou ajuste
a linguagem do seu sistema para o inglês (LC_ALL, ...)
--
" O conceito que temos de Deus determina nosso modo de
viver."
////
( O O )
=======oOO==(_)==OOo============
Márcio Alexandre S. Mendonça
address@hidden
Linux User #298595
.oooO Oooo.
=======( )===( )============
\ ( ) /
\_) (_/
--
" Procura apresentar-se a Deus aprovado, como obreiro
que não tem de que se envergonhar e que maneja bem a
palavra da verdade. 2Tm 2:15"
////
( O O )
=======oOO==(_)==OOo============
Márcio Alexandre S. Mendonça
address@hidden
Linux User #298595
.oooO Oooo.
=======( )===( )============
\ ( ) /
\_) (_/