[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] awk e soma com ponto flutuante
From: |
address@hidden |
Subject: |
Re: [shell-script] awk e soma com ponto flutuante |
Date: |
Mon, 25 Jun 2007 12:50:28 -0300 |
User-agent: |
Thunderbird 2.0.0.0 (X11/20070326) |
Olá Tiago Barcellos,
Mas isto não é o mesmo que eu fiz?
O awk trabalha a variável SOMA como um inteiro e o resultado não é 11.30
e sim 10.
$ cat << EOF > arquivo
> 1 2 3 4.4
> 1 2 3 5.5
> 2 3 4 5.8
> EOF
$ cat arquivo
1 2 3 4.4
1 2 3 5.5
2 3 4 5.8
$ awk 'NR>1 {SOMA+=$4 } END { print "Soma: ",SOMA }' arquivo
Soma: 10
Ou seja, 5.5+5.8 => 5+5=10 (apenas os inteiros)
A menos que tenha esquecido de algo?
Até,
Alves
> Vejamos...
>
> $ awk 'NR>1 {SOMA+=$4 } END { print "Soma: ",SOMA }' arquivo
>
> Soma: 11.30
>
> $ cat arquivo
> 1 2 3 4.4
> 1 2 3 5.5
> 2 3 4 5.8
>
> Agora, se ao inves de ponto decimal vc tiver virgula... ai pode estar o
> problema.
>
> Uma solucao 'rapida' seria trocar a virgula por ponto com tr
>
> outra seria acertar o localle, porem não imagino como fazer isso neste
> momento.
>
> On 6/25/07, address@hidden <mailto:alves_list%40yahoo.com.br>
> <address@hidden <mailto:alves_list%40yahoo.com.br>> wrote:
> >
> > Olá pessoal,
> >
> > Tenho uma tabela com números em ponto flutuante na coluna 4. Necessito
> > somar estes números e para isto tentei com o awk
> >
> > cat arquivo | awk '{ if (NR>1) SOMA+=$4 } END { print SOMA }'
> >
> > A soma deve ser feita a partir da segunda linha. O problema é que o SOMA
> > é um inteiro. Tem alguma forma de fazer isto com o awk?
> >
> > Até
> > Alves
> >
> >
>
> --
> Tiago B Peczenyj
> Linux User #405772
>
> http://peczenyj.blogspot.com/ <http://peczenyj.blogspot.com/>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>