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

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

Re: [shell-script] Re: Escrever o resultado de um comando no final de ca


From: Julio C. Neves
Subject: Re: [shell-script] Re: Escrever o resultado de um comando no final de cada linha de um arquivo
Date: Fri, 10 Oct 2014 13:43:26 -0300

Xiiii, pirei!
esqueci de declarar a variável Unids que tem as abreviaturas das unidades. Então deveria ter feito:
Unids=" KMGTE"; Posic=
while ((Len / 1024 > 0)); do let Len/=1024; let Posic++; done
echo $Len ${Unids:$Posic:1}b

Uns testes variando o tamanho (Len)

julio@ub-julio ~ $ Unids=" KMGTE"
julio@ub-julio ~ $ Posic=
julio@ub-julio ~ $ Len=200
julio@ub-julio ~ $ while ((Len / 1024 > 0)); do let Len/=1024; let Posic++; done
julio@ub-julio ~ $ echo $Len ${Unids:$Posic:1}b
200 b
julio@ub-julio ~ $ Posic=
julio@ub-julio ~ $ Len=20000
julio@ub-julio ~ $ while ((Len / 1024 > 0)); do let Len/=1024; let Posic++; done
[1]julio@ub-julio ~ $ echo $Len ${Unids:$Posic:1}b
19 Kb
julio@ub-julio ~ $ Posic=
julio@ub-julio ~ $ Len=200000000
julio@ub-julio ~ $ while ((Len / 1024 > 0)); do let Len/=1024; let Posic++; done
julio@ub-julio ~ $ echo $Len ${Unids:$Posic:1}b
190 Mb
julio@ub-julio ~ $ Len=2000000000000
julio@ub-julio ~ $ Posic=
julio@ub-julio ~ $ while ((Len / 1024 > 0)); do let Len/=1024; let Posic++; done
julio@ub-julio ~ $ echo $Len ${Unids:$Posic:1}b
1 Tb

Durante a LatinoWare, que será na próxima semana em Foz do Iguaçu, lecionarei uma oficina de Expressões Regulares (entrada grátis). Quem for da lista e estiver no evento, por favor, se apresente. Se não tiver vaga no lab (o que é provável), e quiser fazer o treinamento, fale comigo que damos um jeito.



Abcs,
Julio
@juliobash
Próximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 10 a 14/11
São Paulo 4Linux 24 a 28/11
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 10 de outubro de 2014 11:43, Julio C. Neves <address@hidden> escreveu:
Aê Osvaldo,
ponha em Len o tamanho do arquivo e execute isso daqui:
$ while ((Len / 1024 > 0)); do let Len/=1024; let Posic++; done
$ echo $Len ${Unids:$Posic:1}b

Pronto, seu problema está resolvido.
OBS: não foi usado nenhum código externo. Só builtin do Bash

Durante a LatinoWare, que será na próxima semana em Foz do Iguaçu, lecionarei uma oficina de Expressões Regulares (entrada grátis). Quem for da lista e estiver no evento, por favor, se apresente. Se não tiver vaga no lab (o que é provável), e quiser fazer o treinamento, fale comigo que damos um jeito.

Abcs,
Julio
@juliobash
Próximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 10 a 14/11
São Paulo 4Linux 24 a 28/11
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 10 de outubro de 2014 09:54, Osvaldo Filho address@hidden [shell-script] <address@hidden> escreveu:
 

Paulo,

A minha é tree v1.5.0 (c) 1996 - 2004 by Steve Baker, Thomas Moore, Francesc Rocher, Kyosuke Tokoro e no momento não poderei atualizá-la. De qualquer forma vou tentar em outra máquina para ver se consigo.
Valeu mesmo pela ajuda!


2014-10-10 9:51 GMT-03:00 Paulo Bettega address@hidden [shell-script] <address@hidden>:
A tua versão é antiga :) veja se exite pacote atualizado ou se
vc consegue compilar uma mais atual.

A minha é
tree --version
tree v1.6.0 (c) 1996 - 2011 by Steve Baker, Thomas Moore, Francesc Rocher, Kyosuke Tokoro

Se não errei na pesquisa, a opção -h existe desde
Version 1.5.1
     Added -h option for human readable output.


Meio off-topic, mas vc pode pesquisar a man page, digite / e 'human',
use ctr-p e ctr-n para navegar. Como padrão o man usa o less como
paginador.

Abraços Paulo Bettega


On 10-10-2014 09:30, Osvaldo Filho address@hidden [shell-script] wrote:
> Obrigado Paulo,
>
>
> Mas minha versão do tree aqui não possui a opção "h".
>
>
>
>
> 2014-10-10 9:27 GMT-03:00 Paulo Bettega address@hidden <mailto:address@hidden>
> [shell-script] <address@hidden <mailto:address@hidden>>:
>
>     A opção -h deixa os números 'legíveis para humanos' :)
>     e pra botar o tamanho no fim usei um sed, está bastante genérico
>     e pode dar problema com algum nome
>
>     tree -hs|sed -r 's/--( \[.*\])(.*)/--\2\1/'
>
>     Abraços Paulo Bettega
>
>     On 10-10-2014 08:56, Osvaldo Filho address@hidden
>     <mailto:address@hidden> [shell-script] wrote:
>     > Bom dia,
>     >
>     >
>     > Agradeço a todas as respostas. Na verdade as saídas após cada linha são diferentes. Utilizei a saída
>     > do Julio, mas a formatação apresentada na stdout não foram visualmente como eu esperava.
>     > Minha idéia é era gerar um arquivo com a saída do comando tree e logo após cada linha apresentar o
>     > tamanho de cada arquivo no formato human readble.
>     > A opção -s (comando tree) mostra o tamanho antes do nome e não no formato human readble.
>     >
>      > 2014-10-10 6:08 GMT-03:00 address@hidden <mailto:address@hidden>
>     <mailto:address@hidden <mailto:address@hidden>> [shell-script]
>      > <address@hidden <mailto:address@hidden>
>     <mailto:address@hidden <mailto:address@hidden>>>:
>      >
>      >     __
>     >
>     >     As soluções apresentadas, se for para uma saída comum a todas as linhas, são as melhores.
>     >
>     >     Dependendo do contexto que vc quer, usar uma variável no awk (usar sed tb funcionaria), usar o
>     >     laço while ou o xargs no script dão uma solução ideal.
>     >
>     >     Mas se o comando que vc quer depende do resultado de cada linha, pode usar o system dentro do awk.
>     >
>     >     Vou dar um exemplo usando o seq como o Júlio fez, imprimir cada linha e depois calcular o seu
>     >     quadrado:
>     >
>     >     seq 10 | awk '{printf $1 " "; system("echo \""$1"^2\"| bc")}'
>     >
>     >     Obs: Atente para o uso das aspas duplas escapadas e junto a aspas duplas sem escape
>     >
>     >     []'s
>     >     Itamar
>     >
>     >
>     >
>     >
>     > --
>     > Att,
>     >
>     > Osvaldo Filho.
>     >
>     > Analista de Suporte (Operações de Datacenter - Backup e Storage) - Synapsis Brasil.
>      > Sócio-fundador do i-TIC Digital Livre <https://www.facebook.com/iticdigital> - Informação
>     Livre para
>     > todos!
>     > Twitter i-TIC Digital Livre: @iticdigital
>     > TUX-CE Member.
>     > Graduado em Redes de Computadores - Centro Universitário Estácio do Ceará.
>     > Técnico em Conectividade com Extensão em Desenvolvimento de Software - IFCE (Cefet).
>     > Graduando em Telemática - IFCE (Cefet).
>     > Novell Datacenter Technical Specialist.
>     > Linux Professional Institute Certified Level 1.
>     > Novell Certified Linux Administrator (CLA).
>     >
>     > Facebook: Osvaldo Filho
>     > Twitter: @osvaldofilho
>     >
>     >
>
>
>     ------------------------------------
>
>     ------------------------------------
>
>     ---------------------------------------------------------------------
>     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
>     <mailto:address@hidden>
>     ---------------------------------------------------------------------
>     Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net
>     ---------------------------------------------------------------------
>     Servidor Newsgroup da lista: news.gmane.org <http://news.gmane.org>
>     Grupo: gmane.org.user-groups.programming.shell.brazil
>
>
>     ------------------------------------
>
>     Links do Yahoo Grupos
>
>
>
>
>
> --
> Att,
>
> Osvaldo Filho.
>
> Analista de Suporte (Operações de Datacenter - Backup e Storage) - Synapsis Brasil.
> Sócio-fundador do i-TIC Digital Livre <https://www.facebook.com/iticdigital> - Informação Livre para
> todos!
> Twitter i-TIC Digital Livre: @iticdigital
> TUX-CE Member.
> Graduado em Redes de Computadores - Centro Universitário Estácio do Ceará.
> Técnico em Conectividade com Extensão em Desenvolvimento de Software - IFCE (Cefet).
> Graduando em Telemática - IFCE (Cefet).
> Novell Datacenter Technical Specialist.
> Linux Professional Institute Certified Level 1.
> Novell Certified Linux Administrator (CLA).
>
> Facebook: Osvaldo Filho
> Twitter: @osvaldofilho
>
>


------------------------------------

------------------------------------

---------------------------------------------------------------------
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

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/shell-script/

<*> Para sair deste grupo, envie um e-mail para:
    address@hidden

<*> O uso que você faz do Yahoo Grupos está sujeito aos:
    https://info.yahoo.com/legal/br/yahoo/utos/terms/





--
Att,

Osvaldo Filho.

Analista de Suporte (Operações de Datacenter - Backup e Storage) - Synapsis Brasil. 
Sócio-fundador do i-TIC Digital Livre - Informação Livre para todos! 
Twitter i-TIC Digital Livre: @iticdigital
TUX-CE Member.
Graduado em Redes de Computadores - Centro Universitário Estácio do Ceará.
Técnico em Conectividade com Extensão em Desenvolvimento de Software - IFCE (Cefet).
Graduando em Telemática - IFCE (Cefet).
Novell Datacenter Technical Specialist.
Linux Professional Institute Certified Level 1.
Novell Certified Linux Administrator (CLA).

Facebook: Osvaldo Filho
Twitter: @osvaldofilho




reply via email to

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