shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] soma no AWK


From: Fernando Mercês
Subject: Re: [shell-script] soma no AWK
Date: Wed, 17 Aug 2011 12:20:59 -0300

Ou com awk:

(tr -d . | awk '{sub(/\,/,"."); printf "%.2f\n", $2+$3}') < texto.txt

Poderia usar duas regex no awk também, mas não gostei. hehe

Abraços.

Att,

Fernando Mercês
Linux Registered User #432779
www.mentebinaria.com.br
softwarelivre-rj.org
@MenteBinaria
------------------------------------
Participe do I Hack'n Rio
                 hacknrio.org
------------------------------------



2011/8/17 Jonathan Lessa <address@hidden>:
> Outra opção:
>
> $ while read linha; do set $(echo $linha); echo "$2 + $3" | sed "s/\\.//g ;
> s/,/\\./g" | bc ; done < texto.txt
>
> 10.70
> 23.21
> 3112752.57
> Alterando um pouco a forma que o colega passou (deve melhorar a performace
> por não usar o 'cat'):
> $ cut -d\  -f2,3 < texto.txt | tr -d \. | tr ,\  .+ | bc
>
> 10.70
> 23.21
> 3112752.57
>
>
> Att.:
> Jonathan Lessa
>
>
> Em 17 de agosto de 2011 11:27, Cléoson Barreto
> <address@hidden>escreveu:
>
>> **
>>
>>
>> Olá!
>>
>> Deve aparecer uma solução melhor, mas isso aqui deve funcionar:
>>
>> $ cat teste.txt
>>
>> PAULO 10,50 0,20
>> JOAO 22,31 0,90
>> KATIA 1.500,32 3.111.252,25
>>
>> $ cat teste.txt | cut -d" " -f2,3 | tr ".,\ " "x.+" | tr -d "x" | bc
>> 10.70
>> 23.21
>> 3112752.57
>>
>> Com o comando "cut" utilizando o separador "," eu separo somente os
>> números. Depois, com o comando "tr" eu substituo tudo o que "." por "x",
>> ","
>> por "." e "\ " (espaço em branco) por "x". Depois com o segundo comando
>> "tr"
>> removo o "x" e jogo tudo para a calculadora "bc".
>>
>> --
>> []'s
>> Cléoson.
>>
>> Em 17 de agosto de 2011 09:57, Matheus Dias <
>> address@hidden> escreveu:
>>
>> > **
>>
>> >
>> >
>> > Amigos, estou com o seguinte problema.
>> > Esse é um exemplo de meu arquivo texto
>> >
>> > PAULO 10,50 0,20
>> > JOAO 22,31 0,90
>> > KATIA 1.500,32 3.111.252,25
>> >
>> > E quero como resultado
>> >
>> > PAULO 10,70 (SOMA DE 10,50 + 0,20)
>> > JOAO 23,21 (SOMA DE 22,31 + 0,90)
>> > KATIA 3.112.752,57 (SOMA DE 1.500,32 + 3.111.252,25))
>> >
>> > Consigo somar as duas primeiras linhas(substituindo a virgula por ponto),
>> > mas essa terceira linha com "."ponto e ","virgula, é o que esta mim
>> > dificultando bastante.( tenho que retirar esse ponto para fazer a soma.
>> Ja
>> > tentei o GSUB para substituir e ele acaba substituindo tudo!
>> >
>> > Alguem com uma ideia para poder mim ajudar?
>> > Agradeço desde ja!
>> >
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>>
>>
>
>
>
> --
> Att.:
> Jonathan Lessa
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como 
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em 
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
> Links do Yahoo! Grupos
>
>
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]