Substituindo ocorrências de palavras dentro de um arquivo

Publicado por Xerxes em 18/06/2015

[ Hits: 21.202 ]

 


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

Como acessar SSH pelo Thunar

Ricoh MP 161 no Ubuntu

Instalação do Typora no Fedora

Como usar NetworkManager no i3

Temas GTK no Fluxbox para Zenwalk

Leitura recomendada

Habilitando rolagem no Screen

Limpando arquivos .conf muito comentados

Redirecionamento de portas IPtables

Renomeando arquivos simultaneamente com apenas uma linha de comando

Resposta automática no seu e-mail

  

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