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

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

Re: [shell-script] Re: [ expr ] - Saída do AWK


From: Paulo Bettega
Subject: Re: [shell-script] Re: [ expr ] - Saída do AWK
Date: Fri, 12 Sep 2014 15:26:47 -0300
User-agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.1.0

Olá Ronaldo, valeu o link, muito bom. Com printf dá pra escolher
as casas decimais.
Tive que substituir o ponto decimal pela vírgula, provavelmente
por causa da localidade.

ksh -c 'n1=12,345678;n2=901,234;echo '\''$n1 + $n2 = '\''$(( $n1 + $n2 ));echo '\''$n1 * $n2 ='\'' $(( $n1 * $n2 ));'
$n1 + $n2 = 913,579678
$n1 * $n2 = 11126,344766652

ksh -c 'n1=12,345678;n2=901,234;printf "\$n1 + \$n2 = %.3f\n" $(( $n1 + $n2 ));printf "\$n1 * \$n2 = %.3f\n" $(( $n1 * $n2 ));'
$n1 + $n2 = 913,580
$n1 * $n2 = 11126,345

Abraços Paulo Bettega

On 12-09-2014 14:51, Ronaldo Ferreira de Lima address@hidden [shell-script] 
wrote:
On Fri, Sep 12, 2014 at 12:31:59PM -0300, Paulo Bettega address@hidden wrote:
 > Com a aritmética do shell não dá porque não trabalha com casas decimais.
O zsh e o ksh não possuem as mesmas limitações que o bash e o csh para
trabalhar com ponto flutuante. De qualquer forma, para fins didáticos,
há pelo menos uma forma de contornar essa limitação:

http://tecnoveneno.blogspot.com/2011/10/bash-aritmetica-de-ponto-flutuante.html

 > A solução do Rodrigo funciona, mas tem que tirar as divisões do awk e mandar
 > pro bc senão a opção scale fica sem efeito. Ou então fazer tudo dentro
 > do awk, mas não sei como.
 >
 > echo "scale=3;$(ls -l etc.tgz|awk '{print $5/1024/1024/1024}')"| bc
 > .00294341
 >
 > echo "scale=3;$(ls -l etc.tgz|awk '{print $5}')/1024/1024/1024"| bc
 > .002
É incoveniente usar awk e bc juntos.

$ awk '{printf "%0.3f", $5/1024/1024/1024}' <(ls -l etc.tgz)
ou
$ bc -q <<< "scale=3;$(ls -l arquivo|cut -d' ' -f5)/1024/1024/1024"

[]'s
--
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------
http://tecnoveneno.blogspot.com



reply via email to

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