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 --- cleo...@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 --- cleo...@cleoson:~$ ./teste.sh mail: ful...@mail.com.br mail: beltr...@mail.com.br ------ --- arquivo original --- cleo...@cleoson:~$ cat arq.txt campo1: aaaa campo2: bbbb mail: ful...@mail.com.br campo4: cccc campo5: ddd registro: 8 campo7: xxxx campo8: zzzz campo1: aaaa campo2: bbbb mail: cicr...@mail.com.br campo4: cccc campo5: ddd registro: 1 campo7: xxxx campo8: zzzz campo1: aaaa campo2: bbbb mail: beltr...@mail.com.br campo4: cccc campo5: ddd registro: 8 campo7: xxxx campo8: zzzz ------ []'s Cléoson. http://farinhadigital.blogspot.com/ 2009/6/17 Adriano Nunes <estudo_li...@yahoo.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 > <estudo_li...@yahoo.com.br<estudo_linux%40yahoo.com.br>> > escreveu: > > De: Adriano Nunes <estudo_li...@yahoo.com.br <estudo_linux%40yahoo.com.br> > > > > Assunto: Re: [shell-script] Captura de entradas especificas > Para: shell-script@yahoogrupos.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: ful...@mail. com.br > campo4: cccc > campo5: ddd > registro: 8 > campo7: xxxx > campo8: zzzz > (pula 1 linha) > > campo1: aaaa > campo2: bbbb > mail: cicr...@mail. com.br > campo4: cccc > campo5: ddd > registro: 1 > campo7: xxxx > campo8: zzzz > > (pula 1 linha) > > campo1: aaaa > campo2: bbbb > mail: beltr...@mail. com.br > (pula 1 linha)" | *grep -B5 -A2 'registro: 8'* > campo1: aaaa > campo2: bbbb > mail: ful...@mail. com.br > campo4: cccc > campo5: ddd > registro: 8 > campo7: xxxx > campo8: zzzz > -- > campo1: aaaa > campo2: bbbb > mail: beltr...@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: ful...@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: cicr...@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: beltr...@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]