quinta-feira, 16 de maio de 2013

FIND e REPLACE com SED

Sed significa "Stream EDitor" como o próprio nome diz "editor de fluxo", é um editor NÃO "convencional" pois não usa interatividade em tela com o arquivo a ser editado e é executado via linha de comando utilizando o "shell"(linux).
Utilizado para editar arquivos de extensão ".txt",".php",".html" dentre outros.

O meu problema era alterar mais de 200 arquivos em PHP trocando os links absolutos por links relativos, e a grande solução para não alterar um por um foi a utilização do SED.

Exemplo de comando utilizado:

$ find /home/user/projetos/ -type f -exec sed -i 's/ANTIGO/NOVO/g' {} \;

Você consegui alterar todos os arquivos que estão dentro do diretório "/home/user/projetos/" e que possuir a palavra "ANTIGO" por "NOVO".

Caso precisa alterar apenas um arquivo use:

$ sed -i 's/ANTIGO/NOVO/g' /home/user/projetos/arquivo.txt

Para mais opções de utilização do SED digite:

$ man sed

Fontes acessadas em 17/05/2013:
 http://www.brunolinux.com/02-The_Terminal/Find_and%20Replace_with_Sed.html
http://pt.kioskea.net/faq/8760-sed-introducao-ao-sed-part-i