shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Pegar valor em um arquivo e atualizar


From: Fábio Batista
Subject: Re: [shell-script] Pegar valor em um arquivo e atualizar
Date: Tue, 21 Dec 2004 18:06:20 -0300

Já adaptei. Bem pobremente, mas tá adaptado.

[fabio@elefante testes]$ cat incrementa.sh
#!/bin/sh

FILE=$1 ; shift
PREFIX=$1 ; shift
SUFFIX=$1 ; shift
EXPRPREFIX=$1 ; shift

sed -r "s/($PREFIX)([0-9]+)($SUFFIX)/\1'\`expr $EXPRPREFIX
\2\`'\3/g;s/.*/echo '&'/" $FILE

[fabio@elefante testes]$ cat incrementa2.txt
[INT_PAN_2005.SES_INT_REGRAS_ALOCACAO_PAR]
$$REGRA_ATUAL=144

[fabio@elefante testes]$ sh incrementa.sh incrementa2.txt
'REGRA_ATUAL=' '' '2 + '
echo '[INT_PAN_2005.SES_INT_REGRAS_ALOCACAO_PAR]'
echo '$$REGRA_ATUAL='`expr 2 +  144`''

[fabio@elefante testes]$ sh incrementa.sh incrementa2.txt
'REGRA_ATUAL=' '' '2 + ' | sh
[INT_PAN_2005.SES_INT_REGRAS_ALOCACAO_PAR]
$$REGRA_ATUAL=146

Fábio David Batista
address@hidden
http://nerd-o-matic.blogspot.com

On Tue, 21 Dec 2004 17:58:22 -0300, Fábio Batista
<address@hidden> wrote:
> Dá pra tentar adaptar este monstrengo.
> Ele incrementa todos os números entre as diretivas $inc nnn$.
> 
> [fabio@elefante testes]$ cat incrementa.txt
> Numeros a incrementar:
> Incrementar: $inc 12$
> 
> [fabio@elefante testes]$ sed -r "s/(\\\$inc )([0-9]+)(\\\$)/\1'\`expr
> 1 + \2\`'\3/g;s/.*/echo '&'/" incrementa.txt
> echo 'Numeros a incrementar:'
> echo 'Incrementar: $inc '`expr 1 + 12`'$'
> 
> [fabio@elefante testes]$ sed -r "s/(\\\$inc )([0-9]+)(\\\$)/\1'\`expr
> 1 + \2\`'\3/g;s/.*/echo '&'/" incrementa.txt | sh
> Numeros a incrementar:
> Incrementar: $inc 13$
> 
> Fábio David Batista
> address@hidden
> http://nerd-o-matic.blogspot.com
> 
> On Tue, 21 Dec 2004 17:54:23 -0200, Rodrigo Baroni
> <address@hidden> wrote:
> >  On Tue, 21 Dec 2004 17:49:11 -0200, Rodrigo Baroni
> >  <address@hidden> wrote:
> >  > On Tue, 21 Dec 2004 16:24:01 -0300 (ART), Leonardo Vieira
> >  > <address@hidden> wrote:
> >  > >
> >  > > Ola galera, estou querendo fazer um script que leia um
> >  > > arquivo pegue um valor a partir de uma determinada
> >  > > posição e atualize esse valor, por exemplo:
> >  > >
> >  > > [INT_PAN_2005.SES_INT_REGRAS_ALOCACAO_PAR]
> >  > > $$REGRA_ATUAL=144
> >  > >
> >  > > Esse seria o arquivo gostaria de pegar esse valor 144
> >  > > do arquivo e subtrair de 1 e atualizar esse arquivo.
> >  > > Obs:
> >  > > 1 - A string '$$REGRA_ATUAL=' é fixa, ou seja, posso
> >  > > pegar sempre a partir da posição 15
> >  > > 2 - Esse número pode ter até 4 casas, exemplo: 1000.
> >  > >
> >  > > Muito obrigado pela atenção de todos!
> >  > >
> >  > > Leonardo Vieira
> >  > > Consultor ETL
> >  >
> >  >
> >  >   Olá Leonardo,
> >  >
> >  >     Em uma linha de comando -  aí vai ela (digite sem quebra de
> >  > linha(enter)), e subtitue <file> pelo nome do seu arquivo. Teste em
> >  > uma cópia dele primeiro! (faça backups) :
> >  >
> >  >       VALUE=$(sed -n '15 s/.*=//p' file); NEW_VALUE=$((VALUE + 1));
> >  > sed "15 s/$VALUE/$NEW_VALUE/" file > file.tmp ; mv file.tmp file
> >
> >    Ops, lendo melhor, entendi errado o que vc havia dito. Pensei que
> >  tal valor estaria sempre na linha nro 15, mas na verdade vc quiz dizer
> >  na posicao 15 neh? - Aí segue corrigido:
> >
> >  VALUE=$(sed -n 's/$$REGRA_ATUAL=//p' file); NEW_VALUE=$((VALUE + 1));
> >  sed "s/$VALUE/$NEW_VALUE/" file > file.tmp ; mv file.tmp file
> >
> >  Rodrigo Ferreira Baroni
> >  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >      "..  mas  se  é  algo  cujo  conhecimento  a humanidade poderá se
> > beneficiar
> >  tremendamente, eu não devo reter pra mim. A proposta da ciência e da
> > tecnologia
> >  é  desenvolver  informações  úteis  para  a  humanidade para ajudar as
> > pessoas a
> >  viverem suas vidas de forma melhor. Se prometemos reter essa informação, se
> > man-
> >  tivermos segredo, então estaremos traindo a missão de nossa área."
> >            -Richard Stallman. President of the Free Software Foundation
> >                                    www.fsf.org
> >  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >
> >
> >
> >  ---------------------------------------------------------------------
> >  Esta lista não admite a abordagem de outras liguagens de programação, como
> > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
> > aviso.
> >  ---------------------------------------------------------------------
> >  Sair da lista: address@hidden
> >  ---------------------------------------------------------------------
> >  Esta lista é moderada de acordo com o previsto em
> > http://www.listas-discussao.cjb.net
> >  ---------------------------------------------------------------------
> >
> >
> >
> >
> >  Yahoo! Grupos, um serviço oferecido por:
> >
> >
> >
> >
> >
> >
> >  ________________________________
> >  Links do Yahoo! Grupos
> >
> > Para visitar o site do seu grupo na web, acesse:
> > http://br.groups.yahoo.com/group/shell-script/
> >
> > Para sair deste grupo, envie um e-mail para:
> > address@hidden
> >
> > O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do
> > Yahoo!.
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]