Substituindo ocorrências de palavras dentro de um arquivo

Publicado por Xerxes em 18/06/2015

[ Hits: 21.984 ]

 


Substituindo ocorrências de palavras dentro de um arquivo



Com o Stream Editor, ou simplesmente "sed", podemos substituir todas as ocorrências de uma determinada palavra dentro de um arquivo.

O comando funciona assim:

sed -i 's/original/nova/g' arquivo

Explicando os parâmetros:
  • "-i" - in-place (define as alterações no arquivo. Se usar um sufixo, cria um backup)
  • "s" - substituição
  • "original" - a palavra a ser substituída
  • "nova" - a nova palavra que vai substituir a antiga
  • "g"- global (todo arquivo)
  • "arquivo" - nome do arquivo

Para mais informações:

sed --help

Referência: Sed HOWTO :: aurelio.net

Outras dicas deste autor

Ajustando data e hora com NTP

Vino sem GNOME

Iniciando o Compiz GTK ou Emerald automaticamente no Fedora Spin (MATE + Compiz)

Como restaurar o logo da tela de boot no Ubuntu

Habilitando senhas fracas no Gentoo

Leitura recomendada

Título "retrátil" da janela no i3

Substituição de strings no VI

Planilha para facilitar definição de máscara no chmod

Os comandos uncompress e zcat

Agendando tarefas com o AT

  

Comentários
[1] Comentário enviado por tiekookeit em 24/06/2015 - 08:36h

Complementar a dica do garoto

o separado "/" pode ser qualquer caractere no caso do / fazer parte da sua expressão
Ex:
sed -i 's|original|nova|g' arquivo
ou
sed -i 's:origina:nova:g' arquivo

Os marcadores ^ e $ indicam respectivamente inicio de linha (^) e fim de linha ($).
Exemplo para remover # no início de linha
sed 's:^#::g' -i arquivo

Caso não queira editar direto e ver como vai ficar antes, execute o comando sem o "i", porém ele vai gorfar na tela o conteúdo do arquivo, se não quiser que gorfe na tela, redirecione para um arquivo qualquer

Na tela
sed 's|antigapalavra|novapalavra|g' arquivo

Para outro arquivo
sed 's/antigapalavra/novapalavra/g' arquivo > arquivo1

Caso queira se ignorar a caixa da letra (maiúscula e minúscula) antes do "g" adicione o modificador "I", assim ele vai coincidir ignorando a caixa da palavra.
Ex:
sed 's:antigapalavra:novapalavra:i g' -i arquivo

[2] Comentário enviado por yu_bb2022 em 25/03/2022 - 14:56h


Como faço para substituir varias palavras no mesmo arquivo? Exemplo
teste1 por var_01
teste2 por var_02
teste3 por var_03


[3] Comentário enviado por tiekookeit em 29/03/2022 - 09:09h


[2] Comentário enviado por yu_bb2022 em 25/03/2022 - 14:56h


Como faço para substituir varias palavras no mesmo arquivo? Exemplo
teste1 por var_01
teste2 por var_02
teste3 por var_03




Simples:

sed 's/teste1/var_01/' -i arquivo.txt

Se você quer que substitua todas as ocorrências, use o modificador g

sed 's/teste1/var_01/g' -i arquivo.txt

No caso de você querer trocar todas expressões num comando só é só criar múltiplas expressões:


sed 's/teste1/var_01/g;s/teste2/var_02/g;s/teste3/var_03/g' -i arquivo.txt

E se var_0* onde * só vai até 9, você nem precisa de várias expressões, é só substituir o teste por var_0

sed 's/teste/var_0/g' -i arquivo.txt





Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts