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

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

RES: [shell-script] Replace de informação em arquivo do tipo texto


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: [shell-script] Replace de informação em arquivo do tipo texto
Date: Fri, 18 Mar 2005 14:47:16 -0300

Bem Gustavo,
as regras da lista quem fez não fui eu e sim o seu owner e ele me pediu para
assim mantê-la. Portanto peço a sua colaboração (e a de todos) neste
sentido.

Não procurei entender o problema do colega que colocou a pergunta pq estou
extremamente ocupado, mas pela sua solução, me pareceu que se vc trocasse o
"| perl ..." por "| xargs -in1 cp {} {}.novo" a coisa funcionaria mais
rápido e não estaríamos aqui neste flame esteril, que gostaria que acabasse
nesta msg.

[ ]s,
Julio
- Moderador -
:wq

| -----Mensagem original-----
| De: Gustavo Chaves [mailto:address@hidden]
| Enviada em: sexta-feira, 18 de março de 2005 14:24
| Para: address@hidden
| Assunto: Re: [shell-script] Replace de informação em arquivo do tipo
| texto
| 
| 
| 
| >>>>> On Fri, 18 Mar 2005 09:10:42 -0300, Julio Cezar Neves - 
| DATAPREVRJ <address@hidden> said:
| 
|   > Olá Gustavo, venho admirando bastante a sua colaboração e o seu
|   > alto nível de programação em shell. Quero ressaltar no entanto
|   > que, conforme está escrito no rodapé de *_todas as msgs da nossa
|   > lista_*, a abordagem de outras linguagens não é permitido.
| 
| Obrigado, Julio.  Eu sabia que mais dia menos dia eu iria acabar
| levando um pito. :-)
| 
| Mas esta regra me parece um tanto radical.  Afinal, eu considero o AWK
| e mesmo o sed como linguagens de programação (você deve conhecer o
| sed-sokoban (http://aurelio.net/sed/sokoban/sokoban.sed.html) do
| Aurélio) e é difícil encontrar algum shell-script que processe texto e
| que não tenha ao menos um one-liner sed ou awk, não é?
| 
| Me parece claro que este não seria o forum para discutir um script que
| comece com um "#!/bin/sed" ou um "#!/bin/awk".  Certamente, não um
| script com um "#!/bin/perl".  Mas qual é a diferença entre discutir um
| script em que apareça um one-liner perl e outro em que apareça um
| one-liner sed ou awk?
| 
| No caso específico do exemplo que eu dei usando um one-liner perl, eu
| precisaria fazer um contorcionismo maior pra obter o mesmo resultado
| em sed porque ele é um editor de stream e eu preciso mexer com um
| arquivo temporário:
| 
|   find /path/to/lib -name '*.cc' | sed 's/.*/mv & &.bkp; sed 
| "s:\barquivo_antigo\.exe\b:arquivo_novo.exe:g" | sh
| 
| Ou com ed, porque é mais chato passar a string de comandos pra ele
| (sem falar que o ed dá erro se não conseguir substituir a string):
| 
|   find /path/to/lib -name '*.cc' | while read f; do
|       ed -s $f <<EOF
|   1,\$s:\barquivo_antigo\.exe\b:arquivo_novo.exe:g
|   w
|   q
|   EOF
|   done
| 
|   > Pelo conhecimento de shell que vc tem demonstrado, tenho certeza
|   > que saberia dar esta resposta usando somente este interpretador,
|   > gerando um script mais otimizado (para o computador) pois evitaria
|   > carregar todo o interpretador perl, fazer uma pré-compilação e
|   > executar a saída do find.
| 
| Como você viu eu tentei.  O resultado em Perl é um pouco menos
| eficiente. (A solução com o ed ficou 8% mais rápida e a com o sed
| ficou 26% mais rápida.)  Mas eu levei *muito* mais tempo pra escrever
| estas duas que a primeira.  Além disso, a com Perl é bem mais fácil de
| entender.
| 
| E, na verdade, raramente eu me preocupo com eficiência de cara.
| Primeiro eu tento escrever o código mais simples possível.  Depois eu
| testo e mexo até funcionar.  Só depois é que eu vou me preocupar com
| eficiência e só se eu sentir que vai precisar.  (Aliás, citando o
| Hoare: "Premature optimisation is the root of all evil".)  Obviamente,
| isto depende do contexto.  Mas neste caso em particular, como
| provavelmente se trata de um script pra rodar uma vez e jogar fora, a
| velocidade de programação é mais importante que a velocidade do
| script.
| 
|   > Por favor continue cooperando para manter a lista no alto padrão
|   > que ela se encontra, porém abstendo-se de sair do seu tema.
| 
| Vou tentar, mas eu sinceramente gostaria que você revisse a regra e a
| deixasse mais clara.  Na minha opinião, deveriam ser permitidos
| one-liners em qualquer linguagem.
| 
| Gustavo.
| 
| 
| ---------------------------------------------------------------------
| 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.listas-discussao.cjb.net
---------------------------------------------------------------------
 
Links do Yahoo! Grupos




 




reply via email to

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