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.