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