Pular para o conteúdo

Substituindo ocorrências de palavras dentro de um arquivo

Dica publicada em Linux / Comandos
Xerxes xerxeslins
Hits: 23.868 Categoria: Linux Subcategoria: Comandos
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Crie atalhos no XFCE para controlar o volume do Som

Como instalar Steam no Debian e no LMDE

Steam no Linux Mint - Erro: Couldn't set up Steam data - please contact technical support [Resolvido]

Não adiciona impressoras no Elementary OS [Resolvido]

Restaurar painel do Cinnamon

Comando "fdisk -l" não funciona como usuário comum no Deepin [Resolvido]

Rápido sobre RPM

Habilitando o SUDO no Debian 8

Tratando arquivos de pacote

Ajustando data e hora com NTP

#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

Entre na sua conta para comentar.