Anteriormente, adicionamos e removemos linhas. Hoje, iremos fazer substituição utilizando o comando “c\”. Ao remover ou substituir é sempre recomendável realizar backup. Visto que se o arquivo alterado se tratar de algum arquivo de configuração pode haver erro no programa relacionado e lembrar/recolocar texto removido é muito mais difícil. Dito isto, iremos utilizar, juntamente com o comando “c\” o a opção “-i.bkp” para “backupearmos” o arquivo alterado.
Exemplo de Linha de Comando
sed -i.bkp ‘2c\Coloco esse texto na linha 02 do arquivo’ ./texto.txt
sed = Ferramenta de edição de fluxo de texto;
-i.bkp = a opção -i altera o arquivo; ao adicionarmos algum texto à frente do “-i” sed insere automaticamente esse tal texto em uma cópia/backup do arquivo.
2 = o número 2 poderia ser qualquer outro numeral. Se refere ao número da linha no arquivo a ser alterado.
c\ = esse é o comando que substitui linhas. No caso, removerá a linha 2 e no seu lugar inserirá o texto “Coloco esse texto na linha 02 do arquivo”
texto.txt = é o arquivo a ser alterado. Poderia ser qualquer outro arquivo 🙂
Arquivo a ser Trabalhado
Trabalharemos no arquivo: /home/elder/textos/teste.txt
teste.txt
[elder@serverTeste textos]$ cat ./teste.txt
Coloquei esse texto usando SED
Maria entrou na casa
Aterrorizante! Muito Aterrorizante
Praticando
- Substituir a primeira linha do texto e realizando backup
[elder@serverTeste textos]$ sed -i.bkp '1c\A história de Maria do Bairro' ./teste.txt
Verificando
[elder@serverTeste textos]$ sed '' ./teste.txt A história de Maria do Bairro Maria entrou na casa Aterrorizante! Muito Aterrorizante
trocamos “Coloquei esse texto usando SED” por “A história de Maria do Bairro“
- Trocaremos a última linha do arquivo. Obs.: a primeira linha pode ser identificada usando o símbolo “$”, assim como para localizar a primeira linha podemos usar “^”. Veremos exemplos abaixo.
[elder@serverTeste textos]$ sed -i.bkp '$c\A casa era muito confortável' ./teste.txt
Observe que usei o carácter “$” antes de “c\” para dizer à ferramente Sed que desejo alterar a última linha.
Visualizando[elder@serverTeste textos]$ sed '' ./teste.txt A história de Maria do Bairro Maria entrou na casa A casa era muito confortável
- Só para matar a saudade do artigo anterior, iremos adicionar uma frase na primeira linha do arquivo.
[elder@serverTeste textos]$ sed -i.bkp2 '^i\Irei contar uma história' ./teste.txt sed: -e expressão #1, caractere 1: Comando desconhecido: `^'
Erro de Comando desconhecido 🙁 Não reconheceu o “^” acento de circunflexo. deixaremos então para usá-lo quando estivermos praticando expressões regulares com comando s.
Não há maiores problemas com erro acima, só voltarmos a usar número 1 como representante da primeira linha.
[elder@serverTeste textos]$ sed -i.bkp2 '1i\Irei contar uma história' ./teste.txt
Verificando o texto após adição
[elder@serverTeste textos]$ sed '' ./teste.txt Irei contar uma história A história de Maria do Bairro Maria entrou na casa A casa era muito confortável
Verificando backups Gerados pelo Sed
Ufa! quase esqueço de verificar os backups gerados pela ferramente de edição de Fluxo(Sed = stream editor)
[elder@serverTeste textos]$ ls -1 listaNomes.txt teste.txt teste.txt.bkp teste.txt.bkp2
Siga-nos em nossas redes:
Link Facebook: https://www.facebook.com/gnulinuxbr
Link WhatsApp: https://chat.whatsapp.com/JbxmZmLvIIGCDLjd1VFMUO
Link Telegram: https://t.me/gnulinux_brasil
G+: https://plus.google.com/communities/112884163231229355409
YouTube: https://www.youtube.com/channel/UCwyFWDqE0v7SwpZenjmzxYQ
Salve salve,
Sou iniciante no assunto, mas como muitos ansioso por resultados. Tenho uma situação em que preciso substituir e acrescentar palavras em linhas de um arquivo.
Por ex. Arquivo smb.conf. quero substituir o WORKGRUP por GARGAMEL. até ai tudo bem o tutorial ajuda bastante, entretanto preciso em outras linhas tirar o comentário do início e colocar alguma coisa no final ou substituir a linha totalmente, que acho ser mais fácil.
Alguém pode me ajudar?
Tudo bem, Ronan?
Entendi sua dúvida. Por estar envolvido com os temas, acabei dando um tempo nos Posts sobre sed, mas há muita coisa a ser postada ainda. Vou ver se acelero as publicações e crio um artigo segundo a sua necessidade. Fique atento.
Obrigado pelo retorno.