Localizar e substituir em grandes arquivos com sed

Hoje precisei localizar e substituir todas as ocorrencias de uma string dentro de um arquivo muito grande de um dump de um banco de dados MySQL de uma loja magento que mudou de domínio. Normalmente eu fazia isso com o Notepad++ que tem o melhor desempenho nessa tarefa em comparação com outros editores como Sublime Text, Dreamweaver, Bloco de Notas, etc. Porém alguma coisa estava saindo errado no processo e eu não estava conseguindo importar o banco. E como o arquivo era muito pesado não tinha possibilidade de eu encontrar a linha com erro e corrigir.

Então encontrei um comando que substitui lá no linux, chamado sed. Isso salvou minha vida e do cliente que estava atendendo.

O comando é bem simples, no meu caso, como queria mudar um domínio por outro, o comando que executei foi:

$ sed -i 's/dominioantigo.com/novodominio.com/g' database.sql

Como é uma expressão regular, recomendo escapar todos os símbolos presentes na string. No meu caso como o único símbolo era um ponto, e mesmo ele sendo um coringa nas expressões regulares, não achei que poderia prejudicar e no fim deu tudo certo, mas o correto seria eu ter executado este comando:

$ sed -i 's/dominioantigo\.com/novodominio\.com/g' database.sql

É uma solução prática para muitas tarefas, mas acho que o que mais acontece por aí que exige essa tarefa é mudança de domínio.

Autor: Frederico de Castro

Diretor de tecnologia da Surreal Group, formado em sistemas de informação, com experiência em desenvolvimento web e desktop desde 2006, gosta de tudo relacionado à tecnologia e automação no ambiente web.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *