=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
UNIX GURU UNIVERSE DICA UNIX
Dica Unix 2620 - 06 de março de 2007 http://www.ugu.com/sui/ugu/show?tip.today
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
COMA A SUA TORTA DE PERL
Mamãe de vez em quando diz : “com sua torta de perl " !
Um das tarefas comuns é substituir strings em um ou mais arquivos. A string do sed é usada para isto, onde o sed é passado para um arquivo, as substituições de string são passadas para outro arquivo e finalmente o arquivo é copiado para o arquivo original para que as mudanças tenham o efeito desejado.
Este modo tem alguns problemas. A sintaxe do comando é longa e incômoda, um arquivo secundário é criado envolvendo uma maior carga de I/O, e quando este arquivo é copiado para cima do outro problemas de permissão e de donos de arquivos são criados. Se o seu umask não achar as permissões do arquivo original, as permissões do novo arquivo não serão iguais as do original. Do mesmo modo, as permissões do arquivo e dono impostas ao arquivo temporário, e se não houver cuidado, quando a cópia temporária for copiada para o arquivo original, isto destruirá as permissões de dono e de grupo.
Um modo muito mais fácil de substituir o texto em um arquivo ou grupo de arquivos é utilizar a “torta do perl”, como mostrado abaixo :
perl -p -i -e ’s/original text string/replacement string' foo
O seguinte comando substituir a primeira instância de “original text string” por “replacement string” no arquivo foo. Se você precisa executar isto globalmente dentro de um arquivo, adicione /g que é o atributo global no final do comando, como abaixo :
perl -p -i -e ’s/original text string/replacementstring/g' foo
Para executar isto em muitos arquivos dentro do diretório atual, modifique a especificação do arquivo que você queira, por exemplo, foo*, ou alguma outra coisa que você precise.
Observe que o perl utiliza exatamente a mesma estrutura de substituição que o sed utiliza, tornando o comando bem fácil de ser lembrado. Além disto, o perl executa toda a operação dentro do arquivo, eliminando a criação de um arquivo secundário, tornando menor a carga de I/O e ainda, não criando a possibilidade dos erros de permissão e donos de arquivo.
Esta dica foi generosamente remetida por : jem@postfive.rose.hp.com ————————————————————————————Para assinar: http://www.ugu.com/sui/ugu/show?tip.subscribe Para sair: http://www.ugu.com/sui/ugu/show?tip.unsubscribe Para enviar uma dica: http://www.ugu.com/sui/ugu/show?tip.today
=============================================== DECLARAÇÃO: TODAS AS DICAS DE UNIX SÃO PROPIEDADE DA UNIX GURU UNIVERSE E NÃO SÃO PARA SER VENDIDAS, IMPRESSAS OU USADAS SEM O CONSENTIMENTO POR ESCRITO DA UNIX GURU UNIVERSE. TODAS AS DICAS SÃO “USADAS POR SEU PROPIO RISCO”. UGU ADVERTE PARA TESTAR TODAS AS DICAS EM UM AMBIENTE QUE NÃO ESTEJA EM PRODUÇÃO.
Unix Guru Universe - www.ugu.com - tips@ugu.com - Copyright 1994-2007 =========================================================================