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: Cléoson Barreto
Subject: Re: [shell-script] Captura de entradas especificas
Date: Wed, 17 Jun 2009 15:07:37 -0300

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
mail: address@hidden
------

--- arquivo original ---
cleoson@cleoson:~$ cat arq.txt
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
------


[]'s
Cléoson.
http://farinhadigital.blogspot.com/


2009/6/17 Adriano Nunes <address@hidden>

>
>
> 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>>
> escreveu:
>
> De: Adriano Nunes <address@hidden <estudo_linux%40yahoo.com.br>
> >
>
> Assunto: Re: [shell-script] Captura de entradas especificas
> Para: address@hidden <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]



reply via email to

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