O Comando de Substituição

O comando de substituição serve para trocar uma cadeia de caracteres por outra num texto. O formato do comando é


[endereço1[,endereço2]]s/$ \langle$procura$ \rangle$/$ \langle$substituição$ \rangle$/{modificadores}


onde os modificadores podem ser os seguintes

n
substitui a $ n$-ésima ocorrência de $ \langle$procura$ \rangle$ por $ \langle$substituição$ \rangle$
g
substitui todas as ocorrências de $ \langle$procura$ \rangle$ por $ \langle$substituição$ \rangle$
p
escreve na saída padrão se alguma substituição é feita
w $ \langle$arq$ \rangle$
escreve a saída padrão para $ \langle$arq$ \rangle$ se alguma substituição é bem sucedida

Um endereço pode ser uma Expressão Regular (ER) entre barras /ER/ ou um número de linha. Se dois endereços estão separados por vírgulas, a substiuição é aplicada para todas as linhas entre as duas especificadas, inclusive. Por exemplo, considere o arquivo linhas

$ cat linhas

linha 1 (um)

linha 2 (dois)

linha 3 (três)

Para aplicarmos a substituição de linha por LINHA nas linhas 1 e 2, escrevemos

$ sed -e '1,2s/linha/LINHA/' linhas

LINHA 1 (um)

LINHA 2 (dois)

linha 3 (três)

ou seja, a substituição de linha porLINHA só acontece nas linhas 1 e 2, conforme especificado no endereço 1,2s/... . Ao invés de usar números de linha, podemos endereçar a substituição através de Expressões Regulares, conforme abaixo

sed -e '/um/s/linha/LINHA/' linhas

LINHA 1 (um)

linha 2 (dois)

linha 3 (três)

pois o sed somente executa a substituição nas linhas que contém a ER /um/. É uma outra forma de endereçamento.

leon 2008-08-19