Como usar o comando sed para substituir a string nos arquivos

Como usar o comando sed para substituir a string nos arquivos

Você já teve uma situação em que precisa substituir uma palavra ou frase em muitos arquivos? Você pode copiar e colá -lo, ou talvez exista um script existente que possa fazer o trabalho. Mas que tal se você só precisa substituí -lo por outra palavra ou frase em outro lugar? Você pode usar o encontro, mas isso seria muito genérico e exigirá escrever um script para esta tarefa. E se você nem souber que palavra ou frase você deve encontrar e substituir? Que tal usar sed então? Se você não está familiarizado com a linha de comando Unix, sed é um editor de fluxo. É um editor de texto simples que lê a partir de entrada padrão e executa operações de edição no fluxo à medida que é lido. É comumente usado para pesquisa e substituição da funcionalidade em scripts.

Neste artigo, mostraremos alguns exemplos de como usar o SED para executar a pesquisa e substituir o texto em arquivos.

Encontre e substitua a string nos arquivos

Se você só precisar executar uma pesquisa e substituição simples, poderá usar a seguinte sintaxe:

sed -i 's/string_to_find/string_to_replace/' file1 file2 filen 

Aqui:

  • -eu: Este sinalizador indica que seu arquivo de entrada deve ser um dos arquivos especificados após o comando.
  • string_to_find: Esta é a string que você deseja pesquisar nos arquivos.
  • String_to_replace: Esta é a string que você deseja substituir a string what_to_find dentro dos arquivos.
  • FILE1 FILE2 FILEN: Esta é a lista de arquivos que o SED pesquisará e substituirá.

O comando a seguir procurará todas as cordas “olá” no Bem-vindo.TXT arquivo. Em seguida, substitua -o por uma nova string "Howdy" no mesmo arquivo.

sed -i 's/hello/Howdy/g' bem -vindo.TXT  

Você também pode criar um backup do arquivo original antes de fazer alterações com -eu seguido de alguma extensão. Por exemplo:

sed -i.Backup 's/hello/Howdy/g' bem -vindo.TXT  

Isso criará um arquivo bem -vindo.TXT.Backup no diretório atual com o conteúdo original do arquivo.

Substitua recursivamente o texto em vários arquivos

O comando a seguir é útil para substituir strings em vários arquivos de uma só vez em um diretório /opt /docs. Aqui, o encontro navegará para todos os arquivos no diretório definido e executará o comando sed um por um.

encontre/opt/docs/-type f -exec sed -i 's/hello/Howdy/g' ;  

Substitua o texto sem afetar o arquivo original

Se você não deseja fazer alterações no seu arquivo original e criar novos arquivos com seqüências alteradas, use o seguinte comando.

sed 's/hello/Howdy/g' bem -vindo.txt> Welcome_2.TXT  

Este comando criará um novo arquivo Bem -vindo_2.TXT com texto modificado. O arquivo original permanece inalterado.

Conclusão

Um comando sed é uma ferramenta poderosa que pode ser usada para editar o texto em arquivos. É útil quando você tem uma situação em que precisa encontrar e substituir uma string em muitos arquivos. Você poderia usar o encontro, mas isso seria muito genérico e exigirá escrever um script. E se você nem souber que palavra ou frase você deve encontrar e substituir? Usar sed é uma solução melhor.