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

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


reply via email to

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