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

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

Re: [shell-script] Transformando valores de bytes p/ kb e kb p/ bytes


From: Julio C. Neves
Subject: Re: [shell-script] Transformando valores de bytes p/ kb e kb p/ bytes
Date: Wed, 27 Jun 2007 01:32:13 -0300

Gonella,
Se os dados estão dentro de um arquivo como vc disse ao Bruno, creio que o
melhor seria algo assim:
while read Tamanho
do
    let var='Tamanho % 1024 ? Tamanho / 1024 + 1 : Tamanho / 1024'
    echo $var
done < arquivo

Se for somente para imprimir, pode ser assim:

while read Tamanho
do
    echo $((Tamanho % 1024 ? Tamanho / 1024 + 1 : Tamanho / 1024))
done < arquivo

Usei uma propriedade pouco usada da aritimética com bash que se lê da
seguinte maneira: Se houver resto na divisão de Tamanho por 1024 (Tamanho %
1024), então (?) devolva Tamanho / 1024 + 1, senão (:) devolva Tamanho /
1024.

Se não ajudei, pelo menos mostrei uma forma pouco conhecida de se usar
aritimética com o Bash. Isso tem no meu livro e em www.julioneves.com.

PS: Somente agora me ocorreu que o while pode ser substituido por um xargs
-n 1 e virar um one-liner

Abraços,
Julio
:wq



Em 26/06/07, Leslie Watter <address@hidden> escreveu:
>
>   Talvez essa sequencia resolva o teu problema:
> Note que eu simplesmente deixei o próprio bash fazer o arredondamento ;-)
>
> $ for i in `cat t`; do export X=$(($i / 1024)); export Z=$(($i * 1024));
> echo -e $i "\t" $X "\t" $Z; done
> 1392 1 1425408
> 15 0 15360
> 8 0 8192
> 4169 4 4269056
> 4781 4 4895744
> 1756 1 1798144
> 798260 779 817418240
> 42000 41 43008000
> 4658 4 4769792
> 47284527 46176 48419355648
> 46958584 45857 48085590016
> 11 0 11264
> 2022793 1975 2071340032
> 29079 28 29776896
> 1664 1 1703936
> 4100 4 4198400
> 4096 4 4194304
> 2267 2 2321408
>
> $
>
> Sds,
>
> LEslie
> --
> Leslie H. Watter
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Abraços,
Julio
http://www.julioneves.com - Um livro sobre Bash completo e on-line
:wq


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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