[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Capturar intervalo de linhas separadas por alguma exp
From: |
Márcio Gil |
Subject: |
Re: [shell-script] Capturar intervalo de linhas separadas por alguma expressao |
Date: |
Wed, 26 May 2010 18:37:36 -0300 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4 |
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.