Autor Tópico: Como substituir uma linha em qualquer arquivo de texto  (Lida 10312 vezes)

Offline BIGBRUNO

  • Usuário Ubuntu
  • *
  • Mensagens: 17
    • Ver perfil
Como substituir uma linha em qualquer arquivo de texto
« Online: 30 de Maio de 2006, 06:48 »
Editei o post pq o Julio Neves viu em uma lista que enviei isso e fez várias melhorias, o código agora ficou bem mais otimizado :)

Uma tarefa que costuma ser bastante chata é modificar uma linha ou mais linhas de um arquivo de configuração usando shell script, porém existe uma solução fácil, veja o exemplo:

Vamos modificar o valor da variável Size de 4 para 10 do arquivo abaixo supondo que esse arquivo é o /etc/biglinux

Código:
Position=3
Size=4
SizePercentage=100
Name=BigLinux


Basta usar a seguinte linha na shell:

Código:
sed -i 's/^Size=.*/Size=15/' /etc/biglinux


O ^Size= Especifica que é para alterar apenas a linha que começar com Size= o .* especifica que é para apagar toda a linha e o Size=15 é o que deve ser escrito no lugar do que estava antes.

O primeiro /etc/biglinux diz ao sed qual o arquivo que ele deve ler, e o -i diz que é para alterar esse mesmo arquivo e não apenas exibir na tela.

O sed aceita adicionar várias modificações em série, sem precisar salvar varias vezes, veja no exemplo:

Código:
sed -i 's/^Size=.*/Size=50/;s/^Name=.*/Name=Bruno/;s/^Position=.*/Position=55/' /etc/biglinux


Espero que seja útil para vocês e se souberem de alguma forma mais simples que divulgue-a.

Agradeço ao Julio Neves que ajudou a melhorar esse script em sed que foi apresentado Smile

Um bom guia de SED em português para quem quiser se aprofundar nesse programa http://sed.sourceforge.net/sed1line_pt-BR.html

denisbr

  • Visitante
Como substituir uma linha em qualquer arquivo de texto
« Resposta #1 Online: 30 de Maio de 2006, 08:54 »
Para completar a referência temos ainda:
Dominando o SED e sed-HOWTO

Offline malakl

  • Usuário Ubuntu
  • *
  • Mensagens: 124
    • Ver perfil
    • http://macaxeiradigital.blogspot.com
Como substituir uma linha em qualquer arquivo de texto
« Resposta #2 Online: 05 de Junho de 2006, 15:55 »
Hehehe parece q vcs leram meus pensamentos tava precisando de algo parecido um dia desses.

Valews

"O que eu espero senhores, é que depois de um razoável período de discussão, todo mundo concorde comigo" Winston Churchill

Offline JarbasAugusto

  • Usuário Ubuntu
  • *
  • Mensagens: 50
    • Ver perfil
Re: Como substituir uma linha em qualquer arquivo de texto
« Resposta #3 Online: 19 de Setembro de 2007, 15:33 »
por exemplo,

tem como no campo q for alterar mandar a informação de data e hora atuais?
Exemplo:

Código:
Name=teste.mp4
Size=4
SizePercentage=100
TESTE=BigLinux

Ficar assim:
Name=DD-MM-AAAA-HH-MM.mp4
Size=4
SizePercentage=100
TESTE=BigLinux


Offline mailson

  • Usuário Ubuntu
  • *
  • Mensagens: 28
    • Ver perfil
Re: Como substituir uma linha em qualquer arquivo de texto
« Resposta #4 Online: 19 de Setembro de 2007, 18:43 »
tem como no campo q for alterar mandar a informação de data e hora atuais?

Veja man date que você acha a resposta para a sua dúvida.

Eu acho bom também estudar um pouco sobre Expressões Regulares caso queira se aprofundar melhor no sed
Um ótimo link para aprender e consultar é o guia do aurélio. Você pode também comprar o livro dele se preferir.

Offline JarbasAugusto

  • Usuário Ubuntu
  • *
  • Mensagens: 50
    • Ver perfil
Re: Como substituir uma linha em qualquer arquivo de texto
« Resposta #5 Online: 20 de Setembro de 2007, 08:35 »
obrigado brother
vou pesquisar e posto minhas tentativas!!