Localizar & Substituir texto em vários documentos na linha de comando

Anonim

Se você se sente confortável com a linha de comando e sempre em uma situação em que precisa localizar e substituir uma palavra, frase, URL ou caractere em um grupo de vários documentos de texto, perl faz o trabalho muito bem. Uma string de comando simples executará rapidamente uma localização e substituição de grupo em lote no texto, seja em um único documento ou abrangendo um grupo de vários documentos.

Como muitas coisas na linha de comando, não há processo de confirmação, portanto, você deve certificar-se de que sua sintaxe está definida corretamente antes de iniciar um comando, caso contrário, pode ser necessário fazer outro localizar e substituir para reparar seu erro de digitação.

A sintaxe básica do comando é a seguinte: perl -pi -w -e 's/THIS/THAT/g;' /caminho/para/arquivos.txt

Para um exemplo de uma única palavra, se você precisar substituir todas as ocorrências de “ogre” por “cornbread” em cada arquivo .txt dentro da pasta “Documentos”, então você usaria o seguinte comando:

perl -pi -w -e 's/ogro/pão de milho/g;' ~/Documents/.txt

Para um exemplo de encontrar e substituir uma frase inteira, vamos supor que vamos substituir a frase inteira “A Fábrica de Chocolate ” com “The Wizard of Oz” em um grupo de arquivos .txt começando com “Films” armazenados no diretório Documents:

perl -pi -w -e 's/A Fábrica de Chocolate/O Mágico de Oz/g;' ~/Documents/Films.txt

O localizar e substituir é feito imediatamente. Você pode verificar novamente a alteração usando cat e grep para verificar:

"

cat ~/Documents/Films124.txt |grep Mágico de Oz"

Reconhecidamente, isso é bastante avançado e, sim, localizar e substituir lotes em vários documentos pode ser feito de maneira mais amigável por meio de aplicativos GUI como TextWrangler e BBEdit, mas às vezes a linha de comando é apenas mais rápida para tarefas rápidas como esta e outras semelhantes, além de não exigir nenhum download adicional para usar.

Parabéns ao Lifehacker pelo excelente truque.

Update: O comando 'sed' é outra maneira de localizar e substituir rapidamente por meio da linha de comando. Cobrir o sed é principalmente um tópico para outro artigo, mas a sintaxe básica do uso do sed para esta tarefa é um pouco mais simples e, portanto, mais fácil de lembrar:

sed -i 's/THIS/THAT/g' /path/to/files.txt

Não existe maneira certa ou errada, então se você usa perl ou sed torna-se uma questão de preferência pessoal.

Localizar & Substituir texto em vários documentos na linha de comando