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

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

Re: [shell-script] Comando grep


From: Jose NIEVIADONSKI
Subject: Re: [shell-script] Comando grep
Date: Fri, 21 Mar 2003 09:40:45 -0300

Perfeito Aurélio, concordo com você.

   O uso do cat (filosofia UUOC) para desenvolver aqueles bacalhaus que uma
vez feitos, testados e usados nunca mais serão executados é OTIMO.

   O lembrete vale para aqueles scripts que rodam em 'produção', todo dia,
toda hora, etc. Daí pode-se usar a format cat arq|comando para testar a
solução proposta e ao final 'arrumar' o script, retirando o cat para se ter
mais desempenho. E se por acaso o comando estiver dentro de um for ou
while, vale ainda mais a recomendação.

veja a medição destes comandos realizada em um HP-UX
time for arq in 01 02 03 04 05 06 07 08 09 10
do
   cat exemplo11_$arq | sed  's/a/b/g'
done

resultado
real    0m0.64s
user    0m0.18s
sys     0m0.67s

Com esse script
time for arq in 01 02 03 04 05 06 07 08 09 10
do
 sed  's/a/b/g' exemplo11_$arq
done

resultado
real    0m0.45s
user    0m0.10s
sys     0m0.35s


Abraços a todos
José Augusto Martins Nieviadonski
Analista de Sistemas Consultor
HSBC Bank Brasil S.A. - Banco Múltiplo
Treinamento de informática
Fone : 41 340-5378 - Fax : 41 340-5011






      Para: address@hidden
      cc:
      cco:  Jose NIEVIADONSKI/HBBR/HSBC
      Assunto:    Re: [shell-script] Comando grep
aurelio <address@hidden>

21/03/2003 09:17 AM
Favor responder a shell-script            <font size=-1></font>



























oi jose,

--- Jose NIEVIADONSKI <address@hidden> escreveu: >
> Tenta isso
> grep -e Pedro -e Joao -e Maria teste.txt

também dá pra usar ERs:

grep 'Pedro\|Joao\|Maria' teste.txt

ou melhor com o egrep:

egrep 'Pedro|Joao|Maria' teste.txt


> Tenho visto isso muito aqui na lista. Coisas assim
>
> cat blabla | grep ....
> cat blabla | sed ....
> cat blabla | cut ....
> cat blabla | head ....
>
> Se for somente para processar os dados de um ou mais arquivos,
> pode-se colocar os nomes dos arquivos DIRETAMENTE nos comandos
> grep, sed, cut, head, tail, etc.

eu concordo com o josé no internacionalmente famoso "UUOC"
(Useless Use Of Cat), mas em algumas situações é interessante
fazer isso.

o que acontece, pelo menos no meu caso, é que é na linha de comando
que o filtro sed ou a ER do grep evoluem e vão melhorando até
chegar na versão final.

se a linha de comando é

# cat lixo | sed 's/isso/aquilo/'

e eu preciso adicionar mais um comando no meu sed,
eu volto a linha de comando do histórico e edito o
final dela de maneira fácil, pra ficar:

# cat lixo | sed 's/isso/aquilo/;s/aqueleoutro/isso/'

se ela fosse

# sed 's/isso/aquilo/' lixo

eu tenho que mexer no meio do comando pra editar o filtro, o que
demora mais.


e isso também é bom para demonstrar em dois passos e de maneira
visual como ver as diferenças do filtro aplicado:

# cat arquivo
# cat arquivo | sed 's/.../...' | sed 's/.../.../'

ou seja, você deixa claro que "anexou" um filtro no final do
comando anterior. isso é mais didático que

# cat arquivo
# sed 's/.../...' arquivo | sed 's/.../.../'

na minha opinião.


por isso quando respondo em listas SEMPRE uso cat | sed,
pois é exatamente como eu uso aqui pra fazer os scripts
rápidos nas coxas :)


=====
--
aurelio

_______________________________________________________________________
Busca Yahoo!
O serviço de busca mais completo da Internet. O que você pensar o Yahoo!
encontra.
http://br.busca.yahoo.com/


---------------------------------------------------------------------
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.listasdiscussao.cjb.net
---------------------------------------------------------------------


Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html










This E-mail confidential. It may also be legally privileged. If you are not the 
addressee you may not copy, forward, disclose or use any part of it. If you 
have received this message in error, please delete it and all copies from your 
system and notify the sender immediately by return E-mail.
Internet communications cannot be guaranteed to be timely, secure, error or 
virus-free. The sender does not accept liability for any errors or omissions.
 
Esta mensagem pode conter informação confidencial e/ou privilegiada. Se você 
não for o destinatário ou a pessoa autorizada a receber esta mensagem, não pode 
usar, copiar ou divulgar as informações nela contidas ou tomar qualquer ação 
baseada nessas informações. Se você recebeu esta mensagem por engano, por favor 
avise imediatamente o remetente, respondendo o e-mail e em seguida apague-o.
Comunicações pela Internet não podem ser garantidas quanto à segurança ou 
inexistência de erros, ou contendo vírus. O remetente por esta razão não aceita 
responsabilidade por qualquer erro ou omissão no contexto da mensagem 
decorrente da transmissão via Internet.



reply via email to

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