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

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

Re: [shell-script] Captura de entradas especificas


From: Flavio Junior
Subject: Re: [shell-script] Captura de entradas especificas
Date: Wed, 17 Jun 2009 15:58:53 -0300

[root@muttley ~]# cat x
campo1: aaaa
campo2: bbbb
mail: address@hidden
campo4: cccc
campo5: ddd
registro: 8
campo7: xxxx
campo8: zzzz

campo1: aaaa
campo2: bbbb
mail: address@hidden
campo4: cccc
campo5: ddd
registro: 1
campo7: xxxx
campo8: zzzz

campo1: aaaa
campo2: bbbb
mail: address@hidden
campo4: cccc
campo5: ddd
registro: 8
campo7: xxxx
campo8: zzzz

[root@muttley ~]# grep -E '^(mail|registro):' x | paste - - | awk '$NF ~
/8/{print $2}'
address@hidden
address@hidden
[root@muttley ~]#


Uma ideia..

--

Flávio do Carmo Júnior aka waKKu

2009/6/17 Cléoson Barreto <address@hidden>

>
>
> Olá!
>
> Fiz esse pequeno script. Eu pego blocos do arquivo tendo como
> delimitadores desde a linha 1 do arquivo até a primeira linha em branco e
> jogo em uma variável ($bloco). Depois, excluo esse bloco do arquivo
> original
> e repito o processo até que o arquivo original fique vazio.
>
> --- script ---
> cleoson@cleoson:~$ cat teste.sh
> #!/bin/bash
>
> cp arq.txt{,.$$}
> teste=0
>
> while [ "$teste" -eq "0" ]
> do
> bloco=`sed -n '1,/^ /p' arq.txt.$$`
> sed -n -i '1,/^ /!p' arq.txt.$$
> grep -q "registro: 8" <<< "$bloco" && grep mail <<< "$bloco"
> [ ! -s arq.txt.$$ ] && teste=1
> done
> rm -f arq.txt.$$
> ------
>
> --- execução do script ---
> cleoson@cleoson:~$ ./teste.sh
>
> mail: address@hidden <fulano%40mail.com.br>
> mail: address@hidden <beltrano%40mail.com.br>
> ------
>
> --- arquivo original ---
> cleoson@cleoson:~$ cat arq.txt
> campo1: aaaa
> campo2: bbbb
> mail: address@hidden <fulano%40mail.com.br>
> campo4: cccc
> campo5: ddd
> registro: 8
> campo7: xxxx
> campo8: zzzz
>
> campo1: aaaa
> campo2: bbbb
> mail: address@hidden <cicrano%40mail.com.br>
> campo4: cccc
> campo5: ddd
> registro: 1
> campo7: xxxx
> campo8: zzzz
>
> campo1: aaaa
> campo2: bbbb
> mail: address@hidden <beltrano%40mail.com.br>
> campo4: cccc
> campo5: ddd
> registro: 8
> campo7: xxxx
> campo8: zzzz
> ------
>
> []'s
> Cléoson.
> http://farinhadigital.blogspot.com/
>
> 2009/6/17 Adriano Nunes <address@hidden<estudo_linux%40yahoo.com.br>
> >
>
> >
> >
> > Só complementando:
> >
> > Teria como eu determinar que as linhas em branco que são as delimitações
> > tipo: grep -B(até a linha em branco)
> >
> > --- Em qua, 17/6/09, Adriano Nunes 
> > <address@hidden<estudo_linux%40yahoo.com.br>
> <estudo_linux%40yahoo.com.br>>
> > escreveu:
> >
> > De: Adriano Nunes <address@hidden<estudo_linux%40yahoo.com.br><estudo_linux%
> 40yahoo.com.br>
> > >
> >
> > Assunto: Re: [shell-script] Captura de entradas especificas
> > Para: address@hidden<shell-script%40yahoogrupos.com.br><shell-script%
> 40yahoogrupos.com.br>
>
> > Data: Quarta-feira, 17 de Junho de 2009, 14:31
> >
> >
> > Belezura Galera!
> > Ficou massa, mas tem um detalhe percebi que nos registros as vezes a
> > entrada "registro: 8 e mail: " mudam de linha, então o esquema grep -B5
> -A2
> > falha, alguém tem alguma ideia para resolver esse novo problema...rs ?
> >
> > --- Em qua, 17/6/09, Julio C. Neves <julio.neves@ gmail.com> escreveu:
> >
> > De: Julio C. Neves <julio.neves@ gmail.com>
> > Assunto: Re: [shell-script] Captura de entradas especificas
> > Para: shell-script@ yahoogrupos. com.br
> > Data: Quarta-feira, 17 de Junho de 2009, 14:06
> >
> > Aê Adriano,
> > no prompt:
> >
> > $ echo "campo1: aaaa
> > campo2: bbbb
> > mail: fulano@mail. com.br
> > campo4: cccc
> > campo5: ddd
> > registro: 8
> > campo7: xxxx
> > campo8: zzzz
> > (pula 1 linha)
> >
> > campo1: aaaa
> > campo2: bbbb
> > mail: cicrano@mail. com.br
> > campo4: cccc
> > campo5: ddd
> > registro: 1
> > campo7: xxxx
> > campo8: zzzz
> >
> > (pula 1 linha)
> >
> > campo1: aaaa
> > campo2: bbbb
> > mail: beltrano@mail. com.br
> > (pula 1 linha)" | *grep -B5 -A2 'registro: 8'*
> > campo1: aaaa
> > campo2: bbbb
> > mail: fulano@mail. com.br
> > campo4: cccc
> > campo5: ddd
> > registro: 8
> > campo7: xxxx
> > campo8: zzzz
> > --
> > campo1: aaaa
> > campo2: bbbb
> > mail: beltrano@mail. com.br
> > campo4: cccc
> > campo5: ddd
> > registro: 8
> > campo7: xxxx
> > campo8: zzzz
> >
> > Se quiser tirar as linhas com --, basta ao final colocar* | grep -v --
> --*,
> > ficando assim
> >
> > *grep -B5 -A2 'registro: 8' | grep -v -- --*
> >
> > Onde o primeiro -- serve para dizer que encerram os parâmetros. Se isso
> não
> > for feito, o grep reclamará a falta da cadeia (ou expressão regular) que
> > ele
> > deverá pesquisar, pois "acha" que -- é uma opção.
> > --
> > Abraços,
> > Julio
> > Cursos de Shell e Zenity?
> > - Em SP ligue (11) 2125-4747;
> > - Em DF ligue (61) 3223-3000;
> > - No RJ darei um treinamento em 23/07 (p/ detalhes ligue (21) 2561-0867);
> > - Turmas fechadas em outras cidades ligue (21) 8112-9988
> >
> > 2009/6/17 Adriano Nunes <estudo_linux@ yahoo.com. br>
> >
> > >
> > >
> > > Bom dia Galera!
> > >
> > > Estou precisando de uma ajuda na elaboração de um script, pesquisei na
> > > internet, mas infelizmente não encontrei nada parecido.
> > >
> > > Vamos lá, tenho um arquivo no seguinte formato:
> > >
> > > ************ ********* ********* ********* ********* ********* *******
> > > campo1: aaaa
> > > campo2: bbbb
> > > mail: fulano@mail. com.br <fulano%40mail. com.br>
> > > campo4: cccc
> > > campo5: ddd
> > > registro: 8
> > > campo7: xxxx
> > > campo8: zzzz
> > > (pula 1 linha)
> > >
> > > campo1: aaaa
> > > campo2: bbbb
> > > mail: cicrano@mail. com.br <cicrano%40mail. com.br>
> > > campo4: cccc
> > > campo5: ddd
> > > registro: 1
> > > campo7: xxxx
> > > campo8: zzzz
> > >
> > > (pula 1 linha)
> > >
> > > campo1: aaaa
> > > campo2: bbbb
> > > mail: beltrano@mail. com.br <beltrano%40mail. com.br>
> > > campo4: cccc
> > > campo5: ddd
> > > registro: 8
> > > campo7: xxxx
> > > campo8: zzzz
> > >
> > > (pula 1 linha)
> > >
> > > .... (segue mais ou menos ums 500 registros... rs)
> > > ************ ********* ********* ********* ********* ********* *******
> > >
> > > Preciso que seja capturado os e-mails, apenas dos registros que tem o
> > > numero 8.
> > >
> > > Alguém pode me ajudar, por gentileza!
> > >
> > > Valew galera do bem!
> > >
> > > Abraço.
> > >
> > > Veja quais são os assuntos do momento no Yahoo! +Buscados
> > > http://br.maisbusca dos.yahoo. com
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


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



reply via email to

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