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

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

pesquisar na lista


From: oteb_04
Subject: pesquisar na lista
Date: Thu, 13 Jan 2005 03:39:14 -0000
User-agent: eGroups-EW/0.82

Olá

Aproveitei um assunto da lista(fazer pesquisa)
para fazer o script abaixo. Está funcionando bem.
Ficou bom para deixar a pesquisa sendo feita 
enquanto se faz outra coisa. O processo é demorado.

Como a pesquisa é feita em toda a mensagem, tem 
resultado "falso". Testei agora sobre 'sed' em
3/2001 e dois resultados não tinham nada sobre o 
assunto. A mensagem foi selecionada por isso:

$ cat resp-2-809 |grep sed
> To: <Undisclosed-Recipient: @srv1-ocz.ocz.zaz.com.br;
                --
 
Também aconteceu de retornar "error 999 -- serviço indisponível".
Então as vezes fiquei esperando o resultado e nada estava
sendo pesquisado. Mas pelo browser nenhum erro acontecia, talvez
algum bloqueio do yahoo, sei lá.

Caso alguém use e de algo errado ou tenha idéia de como
acelerar o processo, gostaria de saber. Segue o scritp

abraço
Beto

=============================================================
#!/bin/bash

if [ $# != 3 ]
then
        echo "Uso $0 PARM-PESQUISA MES(num) ANO"
        exit 1
fi

F=$(($2+2))

## primeira pagina do site
lynx -dump -nolist http://br.groups.yahoo.com/group/shell-script/|tr
-s " "> pag-1

## mes de jan(-f3) -- fev(-f4) -- ... --dec(-f14)
Mes=$(cat pag-1 |grep "^ 2005"|tr -s " " |cut -d" " -f3)

## total mensagens
TotalMsgs=$(cat pag-1 |grep "todas as mensagens"|sed
's/[a-zA-Z]\+//g;s/\((\|)\| \)//g')

## total msgs ano 2001-2005 
A=1
for ((x=2001;x<2005;x++))
do
        Ano[$A]=$(cat pag-1|grep -A1 "^ $x"|paste -s |tr -s '   ' '
'|cut -d" " -f$F-14|tr -s " " "+"|bc)
        TotalAno[$A]=$(cat pag-1|grep -A1 "^ $x"|paste -s |tr -s '   '
' '|cut -d" " -f3-1
4|tr -s " " "+"|bc)
        Ano[$A]=${Ano[$A]}
        TotalAno[$A]=${TotalAno[$A]}
        ((A++))
done 

# funcao para determina inicio e fim de msgs em mes/ano
Cal_msg () {
        Inicio=$((TotalMsgs-$1))
        P=$(cat pag-1|grep -A1 "^ $3"|paste -s |tr -s '   ' ' '|cut
-d" " -f$F)
        Fim=$((Inicio+P))
        echo -e " Mes $2/$3 inicia na msg $Inicio e termina na msg $Fim\n"
        ## loop para fazer ends das msgs
        ## mas antes limpando arq
        echo -n >msg-shell
        for ((msg=$Inicio;msg<=$Fim;msg++))
        do
                echo
http://br.groups.yahoo.com/group/shell-script/message/$msg>>msg-shell
        done
}
## escolhendo ano
case $3 in
2005)   ## para saber mes de jan por enquanto
        List=$((TotalMsgs - Mes)) #= inicio-da-listagem
        echo "inicio do mes de jan/$3 $List termino $TotalMsgs"
        ## loop para fazer ends das msgs
        ## mas antes limpando arq
        echo -n >msg-shell
        for ((msg=$List;msg<=$TotalMsgs;msg++))
        do
                echo
http://br.groups.yahoo.com/group/shell-script/message/$msg>>msg-shell
        done
#       exit 05
        ;;
2004)   ## Mensagem em mes comeca em termina em 
        Retirar=$((Mes+${Ano[4]}));: ${Ano[4]?"sem valor"}
        Cal_msg $Retirar $2 $3 $F
#       exit 04
        ;;
2003)   ## Mensagem em mes comeca em termina em
        Retirar=$((Mes+${TotalAno[4]}+${Ano[3]}))
        Cal_msg $Retirar $2 $3 $F
#        exit 03
        ;;
2002)   ## Mensagem em mes comeca em termina em
        Retirar=$((Mes+${TotalAno[4]}+${TotalAno[3]}+${Ano[2]})) 
        Cal_msg $Retirar $2 $3 $F
#       exit 02
        ;;
2001)   ## Mensagem em mes comeca em termina em
 Retirar=$((Mes+${TotalAno[4]}+${TotalAno[3]}+${TotalAno[2]}+${Ano[1]}))
        Cal_msg $Retirar $2 $3 $F
#        exit 01
        ;;
*)      echo "apenas entre 2001 - 2005"
        ;;
esac

## procurando dentro das msgs
cont=0
for i in `cat msg-shell`
do
        lynx -dump -nolist $i|fgrep -i "$1" > repositorio
        if [ -s repositorio ]
        then
                ((cont++))
                id=$(cat msg-shell |grep $i|sed 's/http.*\///g')
                lynx -dump -nolist $i|sed 1,25d > resp-${cont}-${id}
                echo -e "\012\r"
        fi
done

ls |grep resp-

=======================================================================================







reply via email to

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