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

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.

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

====

Sergio.


+++++++++++++++++=

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]



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

 


Responder a