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
g
do comandos//
: utilizado para aplicar a mudança em todas as ocorrências encontradas no conteúdo - Flag
i
do 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.