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

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

Re: [shell-script] Retornar pesquisa de um bloco de arquivos


From: miranda
Subject: Re: [shell-script] Retornar pesquisa de um bloco de arquivos
Date: Mon, 26 Sep 2011 15:23:04 -0300

Cara , até fiz aqui mas não ficou nada trivial( deve ter jeito bem mais
simples ):
[miranda@guitar ~]$ cat xuh.txt
{
BEGIN:VCARD
VERSION:2.1
TEL;HOME:1132333233
TEL;VOICE:1188888888
EMAIL;INTERNET:address@hidden
NOTE:Categories: Unfiled
END:VCARD
}
{
BEGIN:VCARD
VERSION:2.1
N:Santos;TI;;;
FN:TI Santos
EMAIL;INTERNET:address@hidden
END:VCARD
}
{
BEGIN:VCARD
VERSION:2.1
N:da Silva;Xunda;;;
FN:Betrano da Silva
TEL;CELL:1199999999
EMAIL;INTERNET:address@hidden
END:VCARD
}
{
BEGIN:VCARD
VERSION:2.1
N:da Silva;Beltrano;;;
FN:Betrano da Silva
TEL;CELL:1199999999
EMAIL;INTERNET:address@hidden
END:VCARD
}
{
BEGIN:VCARD
VERSION:2.1
N:Santos;TI;;;
FN:TI Santos
EMAIL;INTERNET:address@hidden
END:VCARD
}
{
BEGIN:VCARD
VERSION:2.1
N:da Silva;Capistrano;;;
FN:Capistrano da Silva
TEL;CELL:1199999999
EMAIL;INTERNET:address@hidden
END:VCARD
}

[miranda@guitar ~]$ cat cmd.awk
BEGIN{OK=0;k=0}
$0 ~/{/ {BLOCO[k++]=NR}
$0 ~/TEL;CELL/ {OK=1}
$0 ~/}/ {  if ( OK ) 
                BLOCO[k++]=NR 
              else k--;OK=0}
END{k=0;while ( BLOCO[k] ) {comando=sprintf("sed -n %c%s,%sp%c xuh.txt
\n",34,BLOCO[k++],BLOCO[k++],34);system(comando)}}

[miranda@guitar ~]$ awk -f cmd.awk xuh.txt
{
BEGIN:VCARD
VERSION:2.1
N:da Silva;Xunda;;;
FN:Betrano da Silva
TEL;CELL:1199999999
EMAIL;INTERNET:address@hidden
END:VCARD
}
{
BEGIN:VCARD
VERSION:2.1
N:da Silva;Beltrano;;;
FN:Betrano da Silva
TEL;CELL:1199999999
EMAIL;INTERNET:address@hidden
END:VCARD
}
{
BEGIN:VCARD
VERSION:2.1
N:da Silva;Capistrano;;;
FN:Capistrano da Silva
TEL;CELL:1199999999
EMAIL;INTERNET:address@hidden
END:VCARD
}

On Mon, 2011-09-26 at 13:27 -0300, Robson Alexandre wrote:

>   
> 
> Caros colegas,
> 
> estou quebrando a cabeça para tentar executar esta tarefa de uma
> maneira simples e peço a ajudas d[oa]s senhor[ea]s.
> Tenho um arquivo com o formato
> 
> {
> BEGIN:VCARD
> VERSION:2.1
> TEL;HOME:1132333233
> TEL;VOICE:1188888888
> EMAIL;INTERNET:address@hidden
> NOTE:Categories: Unfiled
> END:VCARD
> }
> {
> BEGIN:VCARD
> VERSION:2.1
> N:Santos;TI;;;
> FN:TI Santos
> EMAIL;INTERNET:address@hidden
> END:VCARD
> }
> {
> BEGIN:VCARD
> VERSION:2.1
> N:da Silva;Beltrano;;;
> FN:Betrano da Silva
> TEL;CELL:1199999999
> EMAIL;INTERNET:address@hidden
> END:VCARD
> }
> 
> e gostaria de trazer por exemplo os blocos entre { } que possuam
> TEL;CELL resultando no caso acima em :
> 
> {
> BEGIN:VCARD
> VERSION:2.1
> N:da Silva;Beltrano;;;
> FN:Betrano da Silva
> TEL;CELL:1199999999
> EMAIL;INTERNET:address@hidden
> END:VCARD
> }
> 
> o problema é q se faço sed '/{/,/}/' para trabalhar com o intervalo
> entre colchetes ele pega o primeiro { e o último } do arquivo, não
> consigo restringir ao primeiro }.
> 
> Att
> Robson Alexandre
> 
> 
> 
> 


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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