[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