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

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

Re: Capturar intervalo de linhas separadas por alguma expressao


From: cleberson
Subject: Re: Capturar intervalo de linhas separadas por alguma expressao
Date: Wed, 26 May 2010 22:07:06 -0000
User-agent: eGroups-EW/0.82

Marcio Gil,

Muitíssimo obrigado cara...fenomenal..show de bola a solução...não ia conseguir 
chegar a esse resultado nunca...rsrs

Se vc tiver a fonte que vc aprendeu a fazer isso e não se importar em 
compartilhar seria bom..rs

muito obrigado novamente!

Cleberson

--- Em address@hidden, Márcio Gil <marciomgil@...> escreveu
>
> Em 26/5/2010 17:16, cleberson escreveu:
> > Boa tarde!
> >
> > Gostaria de uma ajuda para solucionar este desafio(pra min..rs).
> > Desejo capturar um intervalo de linhas separadas por chaves.
> >
> > ex:
> >
> > #arquivo teste
> > primeira_linha
> > teste{
> >    linha1
> >    linha2
> >    linha3
> > }
> > ultima_linha
> >
> > Gostaria de saber qual comando posso utilizar para que seja
>  > possivel jogar o que esta entre chaves para alguma variavel:
> >
> > linha1
> > linha2
> > linha3
> >
> > desde já agradeço atenção!
> >
> > att,
> > Cleberson.
> >
> 
> Ve se assim complica:
> 
> $ cat temp.txt
> #arquivo teste
> primeira_linha
> teste{
>    linha1
>    linha2
>    linha3
> }
> ultima_linha
> 
> $ sed -n '/^teste{$/{N;s/^.*\n//;:a;N;/\n}$/!{ba};s/\n}$//;p}' temp.txt
>    linha1
>    linha2
>    linha3
> $
> 
> Por via das duvidas vou tentar explicar:
> 
> /^teste{$/       # Se encontrar a linha 'teste{'
> {
>    N;             # Junte com a linha seguinte
>    s/^.*\n//;     # Retire a primeira linha (a linha 'teste{')
>    :a;            # Inicio do laco
>      N;           # Junte com a linha seguinte
>      /\n}$/!{ba}; # Enquanto nao encontrar a linha '}'
>    s/\n}$//;      # Entao remova a ultima linha (a linha '}')
>    p              # E exiba o resultado
> }
> 
> A opcao -n do sed desliga a impressao automatica, so imprimindo ao 
> encontrar o comando 'p'.
> 
> Marcio Gil.
>




reply via email to

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