Olá Mestre Julio, no meu sistema, o resultado usando shell puro não bateu conforme esperado: ---- $ PING='ping teste.com (69.36.226.134): 56 data bytes'; P1=`echo ${PING#*(}`; echo ${P1%)*} ping teste.com (69.36.226.134 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Este foi o Resultado... ---- Ou seja ele não filtrou o conteúdo antes do parênteses. Seria alguma variável de ambiente?
[]s Sergio. 2006/10/3, Julio C. Neves <[EMAIL PROTECTED]>: > > Epa quero pegar uma carona na resposta do Sergio > > 2006/10/2, Sergio Nery Simoes <[EMAIL PROTECTED]>: > > > > Olá Alfredo, > > aproveitando o seu comentário, gostaria de alertar que nem sempre > solução > > bonita é sinônimo de desempenho. > > Algumas vezes, executar comandos muito poderosos e processar expressões > > regulares complexas ao invés de uma solução mais simples ("as > lusitanas") > > pode acabar onerando mais o processador. > > Claro que isso depende da implementação do comando em cada sistema (como > é > > o > > caso do fgrep no linux, que teoricamente deveria ser mais rápido mas na > > verdade é um script que chama o grep e por isso acaba sendo mais lento > que > > o > > próprio grep). > > > > No meu conceito isso é o maior furo dos utilitários GNU. fgrep significa > "fast grep" ou grep rápido e foi desenvolvido para não se preocupar em > resolver ERs, mas ser o mais veloz possível. E como o Sérgio acabou de > dizer, isso no GNU grep não é verdade. Por ser um script (escrito em > Shell) > que chama o grep, ele torna-se mais lento. Em tempo o egrep tb é um script > que chama o grep. Verifiquem! > > Por outro lado, devo concordar que as soluções simples nem sempre são > > elegantes, parecendo até mesmo lusitanas, quando não conhecemos o > > funcionamento delas no quesito desempenho. Alem disso, há construções > > complexas que necessitam de expressões complexas, neste caso não tem > jeito > > tornarmos a solução simples. > > O ideal é buscar desempenho sempre que possível. > > > > Concordo com a preleção, mas o problema é que só podemos ter certeza após > testes para mensurar o tempo de execução e se alguém for fazer este teste, > peço que teste tb algo em Shell puro que, teoricamente, deveria ser mais > veloz. > > $ PING='PING teste.com (69.36.226.134): 56 data bytes' > $ P1=`echo ${PING#*(}` > $ echo ${P1%)*} > 69.36.226.134 > > ou, para facilitar o cópia e cola: > > $ PING='PING teste.com (69.36.226.134): 56 data bytes'; P1=`echo > ${PING#*(}`; echo ${P1%)*} > > Gostaria que executasse os comandos abaixo no seu sistema e verificasse > qual > > eh mais rápida... > > > > > > Por favor, faça o teste: > > ==== > > # forma elegante > > > > time for i in `seq 1 2000` > > do > > echo "PING teste.com (69.36.226.134): 56 data bytes" | > > sed -r 's/^.*\((([0-9]{1,3}\.){3}[0-9]{1,3}).*$/\1/' > > done > /dev/null > > > > #---- > > #forma lusitana > > > > time for i in `seq 1 2000` > > do > > echo "PING teste.com (69.36.226.134): 56 data bytes" | > > cut -d"(" -f2 | cut -d")" -f1 > > done > /dev/null > > > > Forma Shell puro: > PING='ping teste.com (69.36.226.134): 56 data bytes'; P1=`echo > ${PING#*(}`; > echo ${P1%)*} > > ==== > > > > Sergio. > > > > Abraços, > Julio > :wq > > > +++++++++++++++++= > > > > 2006/10/2, Alfredo Casanova <[EMAIL PROTECTED]>: > > > > > > heheheh > > > jeito lusitano > > > > > > echo "PING teste.com (69.36.226.134): 56 data bytes" | cut -f2 -d\( | > > cut > > > -f1 -d\) > > > > > > > > > On 10/2/06, Humberto Pereira <[EMAIL PROTECTED]> > > > wrote: > > > > > > > > On Mon, 02 Oct 2006 18:37:12 -0300, Celso Viana < > > [EMAIL PROTECTED]> > > > > wrote: > > > > > 2006/10/2, Humberto Pereira <[EMAIL PROTECTED] > >: > > > > > Humberto, > > > > > > > > > > Poderia traduzir o ... > > > > > sed -r 's/^.*\((([0-9]{1,3}\.){3}[0-9]{1,3}).*$/\1/' > > > > A expressao pega tudo entre () q tenha 1 a 3 numeros seguido de > ponto > > 4 > > > > vezes. O q nao for igual a isso, ele ranca fora da string. > > > > > > > > > > > > > > o que faz a opção "-r" (sh/csh no FreeBSD não tenho essa oção) > > > > > > > > o -r eh p/ expressoes regulares extendidas. Com ele vc nao precisa > > > colocar > > > > escape (\) nos caracteres especiais, (){}.,etc. > > > > acredito q isso tenha apenas no sed GNU. > > > > > > > > Como vc nao tem o -r, remove ele do comando e coloca \ onde tiver () > e > > > {} > > > > e onde tiver remove. > > > > > > > > [EMAIL PROTECTED] tmp]$ echo "PING teste.com (69.36.226.134): 56 data > > bytes" > > > | > > > > sed 's/^.*(\(\([0-9]\{1,3\}.\)\{3\}[0-9]\{1,3\}\).*$/\1/' > > > > 69.36.226.134 > > > > [EMAIL PROTECTED] tmp]$ > > > > > > > > > > > > []s > > > > Humberto Pereira > > > > -- > > > > Using Opera's revolutionary e-mail client: > http://www.opera.com/mail/ > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > 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 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > []'s > > > Alfredo Casanova > > > icq: 15793271 > > > msn: [EMAIL PROTECTED] > > > aim: alfredotcasanova > > > yim: atcasanova2 > > > tel: +55 61 84137319 > > > As aves têm na boca um dente chamado bico > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > > [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] > > > [As partes desta mensagem que não continham texto foram removidas] --------------------------------------------------------------------- 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 <*> 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: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html