Em 21/04/07, mop <[EMAIL PROTECTED]> escreveu: > > Opa Julio: > > Diante do tamanho da string, ainda assim, eu não exitaria em guardar > a saída de stdout em uma nova variável economizando os tubos, digo, > um pipe, mais ainda considerando ser o sed o destinatário.
Como eu te disse, eu não me lembro legal do problema inicial, mas acho que a solução que dei foi para evitar um loop de leitura (e ai nesse caso a substituição de parâmetros seria sensacional) e por isso preferi um único pipe a várias substituições de parâmetros. Mas como disse, não me lembro bem do problema inicial do colega. Aproveitando, depois que enviei a mensagem me toquei que cometi um > erro. Ele não apareceu no bloco porque setei variável, mas de outra > forma poderia ter ficado claro. Octais são representados no shell > prefixados por \0 e hexadecimais por \x, ou seja, onde escrevi \15 > deveria ter escrito \015. Eis como faz diferença: > > prompt> z=$'\15\015';echo -ne "$z\15\015"|xxd > 0000000: 0d0d 5c31 350d ..\15. > > Prefiro sempre visualizar em hexa, por isso uso muito o xxd (vim). > Estou meio enferrujado no uso da base binária. :) Isso é cocoete de programdor C. Qdo programo muito em C, as vezes faço algo parecido... :~( Quanto ao conteúdo do post, fique à vontade para usá-lo em qualquer > lugar, sendo de minha parte dispensada qualquer citação de origem. Não amigo, o Rubens Queiroz incentiva muito iniciativas assim e é um cara muito legal. Mande um e-mail para ele submetendo a sua solução que, no mínimo, vc trocará idéias com um cara sensacionalmente legal. Já vi o que falei, e muito mais, neste link: > http://planeta.dyndns.org/unix/exemplos.txt Não é para me gabar não, mas em http://twiki.softwarelivre.org/bin/view/TWikiBar/TWikiBarPapo009 tb fala tudo sobre substituição de parâmetros e está muito bem explicado. Prefiro sempre que possível apenas citar links ao invés de teclar. > No histórico da lista vi como questões se repetem indefinidamente. > Bom seria uma consolidação em faq ou wiki, algo mais ágil na > consulta, mas é difícil manter. Eu costumo explicar mais ou menos e tb passar os links, mas 98% do que já se abordou nesta lista está no Papo de Botequim<http://twiki.softwarelivre.org/bin/view/TWikiBar/WebHome#Livro_de_Shell_em_Portugu%25EAs> Qto a consolidação proposta, se fosse passada para um pdf ou um odt com índice remissívo, creio que isso daria uma excelente fonte de consulta. Afinal a lista já tem 7 anos e uma média de 500 msg/mês. É muito acervo! Será que alguém se habilita? Por enquanto a melhor forma de consulta é na lista http://news.gmane.org, grupo gmane.org.user-groups.programming.shell.brazil Em Tempo: fui no news group acima para donfirmar o endereço e aproveitei para ver o histórico da thread. O negócio foi diferente... o colega fez um post com um script perfeito e disse que qdo imprimia, perdia algumas variáveis. Como eu já tinha passado por isso e era sujeira (CRTL+...) sugeri que ele imprimeisse com um cat -vet para ver se tinha caracter de controle. Bingo! (Hi, isso agora dá cadeia :), era o famigerado carriage return (^M) do DOS. Em seguida ele fez outro post agradecendo e dizendo que ia tirar os \r com o sed. Sem pensar muito sugeri o uso do tr, já que ambos são externos e o tr tem um código menor que o sed (se bem que o sed para tratar arquivos inteiros é muito veloz pq ele dá uma pré-compilada (bit-code) no script). Chega! Já teclei muito! Abração, Julio :wq []s > > ------------------------------------------------------------------ > >From: "Julio C. Neves" <[EMAIL PROTECTED]> > >Date: Sat, 21 Apr 2007 10:48:48 -0300 > > > >Fala Mop, > >concordo totalmente com vc na afirmativa que "me parece um exagero a > carga > >de um programa externo para retirar 1 byte de uma string de cerca de 16 > >bytes", mas infelizmente a técnica de expansão de parâmetros aplica-se > >somente a variáveis e, se não me engano, o problema apresentado era em um > >arquivo que não estava sendo trabalhado em loop. > > > >Mas a dica é muito boa e acho que vc deveria mandá-la para o Cantinho do > >Shell das Dicas-l. > > > >Abração, > >Julio > >:wq > > > >Em 20/04/07, mop <[EMAIL PROTECTED]> escreveu: > >> > >> Apenas uma opinião: > >> > >> Claro que usar programas externos resolve, mas me parece um exagero > >> a carga de um para retirar 1 byte de uma string de cerca de 16 bytes. > >> > >> A linha no "unix" termina com x0A, assim como no "dos" e seus > sucessores. > >> O detalhe é que a ms usa um "carriage return" (x0D) antes de cada > >> "new line" e esse byte sobra então no fim da linha em leitores tipo > unix. > >> Preparei o bloquinho abaixo, já com new lines ignoradas, para colar > direto > >> na console de uma vez e ver o resultado com uma tecla. Se não > selecionar > >> nenhuma linha além do echo, o Enter fica por sua conta. :) > >> > >> z=$'ABC\rD\15E\x0dF';\ > >> cat -v<<<$z;\ > >> cat -v<<<${z%?};\ > >> cat -v<<<${z/$'\r'};\ > >> cat -v<<<${z//$'\r'};\ > >> echo $z > >> > >> Tudo funcionou como esperava no: > >> $ bash -version > >> GNU bash, version 3.2.0(1)-release (i686-pc-linux-gnu) > >> Copyright (C) 2005 Free Software Foundation, Inc. > >> > >> Se a string já está numa variável e, supondo que se chame z, o último > byte > >> pode ser retirado pelo próprio shell simplesmente com > >> ${z%?} > >> > >> Espero que seja de alguma utilidade. > >> Questões? > >> man bash > >> > >> > >> ------------------------------------------------------------------ > >> >From: Fernando Garcia <[EMAIL PROTECTED]> > >> >Date: Fri, 20 Apr 2007 18:01:37 -0300 > >> > > >> >Olha o que aparecia: > >> > > >> >n: Fa0/47;2;2;1;Shutdown^M$ (Lembra microsoft, acho q por isso nao > >> >funcionava :-D > >> > > >> >Removi com um sed e ta funcionando agora. > > > > --------------------------------------------------------------------- > 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: [EMAIL PROTECTED] > --------------------------------------------------------------------- > 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 > > > -- 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]
