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

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

Re: [shell-script] selecionar substring


From: Sergio Nery Simoes
Subject: Re: [shell-script] selecionar substring
Date: Fri, 6 Oct 2006 01:35:05 -0300

Olá mestre Julio,
executei o shell puro, mas ele não tá filtrando a primeira parte da string,
estou pressupondo que seja alguma variavel de ambiente.

Segue os resultados da execução na minha máquina. Note que a segunda parte
da string ele consegue filtrar normalmente (depois do parenteses).

$ PING='ping teste.com (69.36.226.134): 56 data bytes'
$ echo $PING
ping teste.com (69.36.226.134): 56 data bytes
$ P1=`echo ${PING#*(}`
$ echo $P1
ping teste.com (69.36.226.134): 56 data bytes
$ echo ${P1%)*}
ping teste.com (69.36.226.134
$

Abracos,
Sérgio.



2006/10/5, Julio C. Neves <address@hidden>:
>
> Fala Sérgio,
> será que vc não reparou que houve uma quebra de linha gerada pelo meu
> cliente e-mail? Veja só o passo-a-passo:
>
> Prompt> PING='ping teste.com (69.36.226.134): 56 data bytes'
> Prompt> echo $PING
> ping teste.com (69.36.226.134): 56 data bytes
> Prompt> P1=`echo ${PING#*(}`
> Prompt> echo $P1
> 69.36.226.134): 56 data bytes
> Prompt> echo ${P1%)*}
> 69.36.226.134
>
> Agora a linha toda sem nenhuma quebra:
>
> Prompt> PING='PING teste.com (69.36.226.134): 56 data bytes'; P1=`echo
> ${PING#*(}`; echo ${P1%)*}
> 69.36.226.134
>
> Abração,
> Julio
> :wq
>
>
> 2006/10/4, Sergio Nery Simoes <address@hidden>:
> >
> > 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 <address@hidden>:
> > >
> > > Epa quero pegar uma carona na resposta do Sergio
> > >
> > > 2006/10/2, Sergio Nery Simoes <address@hidden>:
> > > >
> > > > 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%)*}
> > >
> >
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 
>


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



reply via email to

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