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

Deixe uma resposta

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