[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-
=======================================================================================
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- pesquisar na lista,
oteb_04 <=