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