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: Thu, 28 Jun 2007 15:25:17 -0300

Fala Gonella,
então temos que fazer da forma tradicional, o ksh é muito conservador...
Veja se isso serve:

while read Tamanho
do
    echo ((Tamanho % 1024)) && $((Tamanho + 1)) || echo $Tamanho
done < arquivo

Abraços,
Julio
:wq



Em 27/06/07, Sebastiao Gonella <address@hidden> escreveu:
>
>   Julio,
>
> Em teste na máquina Linux funcionou legal, já quando passei ao Unix aí
> iniciou o problema.
> Na máquina AIX quando coloquei #!/bin/bash funcionou legal, mas no HP-UX
> nem
> assim funcionou, retornando:
>
> $ teste.sh
> inicia o spawn
>
> espera string
>
> $ teste.sh
>
> O pior eh que na solução do script já existente teria que utilizar o ksh.
> Alguma luz?
>
> Desde já agredeço pela força!
>
> Gonella
>
> Em 27/06/07, Julio C. Neves <address@hidden<julio.neves%40gmail.com>>
> escreveu:
> >
> > 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 
> > <watter%40gmail.com><watter%40gmail.com>>
> > 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]
> >
> >
> >
>
> --
> --------------------------------------
> Sebastião M. P. Gonella
> Celular: 61-84021512
> address@hidden <segonella%40gmail.com>
> --------------------------------------
>
> [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]