Substituindo ocorrências de palavras dentro de um arquivo

Publicado por Xerxes em 18/06/2015

[ Hits: 22.218 ]

 


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

Conheça um pouco os Roguelikes

Navegador Palemoon no Slackware

Teste de compatibilidade de arquivos

Restaurar painel do Cinnamon

Vino sem GNOME

Leitura recomendada

Complementando os comandos com [TAB]

Comandos liberados por grupos no GNU/Linux

Desativando e ativando o SWAP

Obtendo a lista dos usuários logados no sistema

Como fazer Ubuntu reconhecer a placa de rede NVIDIA Corporation MCP61 Ethernet (rev a2)

  

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