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