Substituindo ocorrências de palavras dentro de um arquivo

Publicado por Xerxes em 18/06/2015

[ Hits: 21.977 ]

 


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

Unity 3D Plugin no Ubuntu e Linux Mint

Alterando Status do DWM

Atualização do Debian Wheezy (estável) para Testing

Humble Bundle 5! Saiu!

Hardinfo - Obtendo especificações do computador

Leitura recomendada

Os poderes do ".bash_history"

fdisk - Visualizando tamanho do disco

APT - Como descobrir a que repositório pertence um pacote

LXDE - Preferências da Área de Trabalho

Mais um vídeo do LinuxTips: sysdig

  

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