Sed 004: Substituindo Linhas

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

  1. 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

  2.  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
  3. 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

 

 

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

2 Comments to “Sed 004: Substituindo Linhas”

  1. 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?

    1. 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.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *