Substituindo textos em arquivo com o comando sed

O comando sed é um programa de linha de comando que oferece um modo de parsing de texto e transformação orientado a linhas. Ele se utiliza de uma sintaxe dedicada e também tem suporte a Expressões Regulares. Uma das aplicações é substituir algum texto de um arquivo.
Vamos supor que temos um um arquivo input.txt em que possui no seu texto uma palavra hello. O que queremos é substituir para world. Segue o exemplo do conteúdo:
Hi,
My name is Gilson and Hello There!
And hello to his family.
E para alterar isso podemos utilizar a seguinte sintaxe:
sed SCRIPT INPUTFILE...
Em que SCRIPT é o local que o programa vai executar as transformações com base no seu sintaxe e também via RegeX.
Com isso podemos utilizar a sintaxe interna do programa com o s/<old>/<new>/[<flag>, ...] para alterar hello para world:
sed 's/hello/world/' input.txt
Usando dessa forma, por padrão o sed irá utilizar a saída padrão para trazer o resultado da substituição:
sed 's/hello/world/' input.txt
Hi,
My name is Gilson and Hello There!
And world to his family.
Caso precisa fazer a alteração no próprio arquivo e por todas as ocorrências encontradas, podemos utilizar algumas funções adicionais:
- Argumento
-i: utilizado para aplicar uma mudança in-place, sem saída padrão. - Flag
gdo comandos//: utilizado para aplicar a mudança em todas as ocorrências encontradas no conteúdo - Flag
ido comandos//: utilizado para aplicar a mudança independente de maiúscula ou minúscula (conhecido como case-insensitive).
sed -i 's/hello/world/gi' input.txt
cat input.txt
Hi,
My name is Gilson and world There!
And world to his family.
Caso queira testar os parâmetros e comandos disponíveis em um modo live preview existe uma ferramenta interessante para verificar se a sintaxe utilizada no sed está correta, é o GNU sed REPL.





