Sed: substituição

Abril 2018


Substituição básica

Simples

1ª ocorrência (de cada linha) encontrado apenas:

sed 's/la/LA/' arquivo.txt

Global

Todas as ocorrências (de cada linha) encontradas:

sed 's/la/LA/g' arquivo.txt

Segmentada

Apenas a 2a ocorrência (de cada linha) encontrada:

sed 's/la/LA/2' arquivo.txt

Substituição condicionada

Simples

/Motivo/ - Somente se a linha contiver "motivo":

sed '/awk/ s/sed/SED/' arquivo.txt

Número de linha - Somente a linha n° "N":

sed '18 s/sed/SED/' arquivo.txt

/Regex/ - Somente se houver correspondência com a expressão regular:

sed '/^[ ][Ss]ed/ s/ed/ED/g' arquivo.txt

Avançada

0,/regex/ - Somente a primeira ocorrência encontrada:

sed '0,/sed/ s//SED/' arquivo.txt

Bloco

/motivo1/,/motivo2/ - Somente no intervalo "motivo1 - motivo2":

sed '/Início/,/Fim/ s/ed/ED/' arquivo.txt # 1a ocorrência apenas 
sed '/Início/,/Fim/ s/ed/ED/g' arquivo.txt # todas as ocorrências

8,13 - Somente no intervalo das linhas de 8 a 13:

sed '8,13 s/ed/ED/g' arquivo.txt

Também podemos combinar motivo e linha:

sed '8,/Fim/ s/ed/ED/g' arquivo.txt 
sed '/Início/,13 s/ed/ED/g' arquivo.txt

Ou ainda com os "regex":

sed '/Início/,$ s/ed/ED/g' arquivo.txt # até o fim ($) 
sed '/^[ ][Ss]ed/,13 s/ed/ED/' arquivo.txt

Avançada

Substituir um texto inteiro por 2 motivos, excluindo os motivos:

sed  '/Início/,/Fim/{ /Início/b;/Fim/b; s/.*/SED - The Stream ÉDitor/; }' arquivo.txt

Para saber mais, veja esta dica.

Foto: © Linux.
Artigo original publicado por jipicy. Tradução feita por pintuda. Última modificação: 11 de março de 2018 às 10:50 por pintuda.
Este documento, intitulado 'Sed: substituição', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (https://br.ccm.net/) ao utilizar este artigo.
Sed - Inserir um espaço entra cada letra
Sed - Inserção de texto