Para encerrar o ano, um script que trabalha com os números dos concursos anteriores da Mega Sena.
O script baixa um arquivo com todos os resultados da Mega Sena, descompacta e apaga arquivos sem importância.
Considero ser uma melhoria em relação ao script da Análise dos números da Quina por simplificar a etapa de extrair os números sorteados e evitar mensagens de erros quando se tenta apagar arquivos que não existem.
#!/bin/bash
# Created in dez/26/2012 by murilofujita@gmail.com
# Baixa e descompacta
wget http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_mgsasc.zip
unzip D_mgsasc.zip
# Apaga arquivos desnecessários
if [ -f D_mgsasc.zip ]
then
rm D_mgsasc.zip
fi
if [ -f T2.GIF ]
then
rm T2.GIF
fi
if [ -f /tmp/sena1.txt ]
then
rm /tmp/sena*.txt
fi
inicio=4 # Primeira linha da sequência do primeiro sorteio
fim=9 # Última linha da sequência do primeiro sorteio
contador=1 # Primeiro sorteio
# Necessário eliminar o Feed Line e Carriage Return editado pelo windows
tr -d '\r' < d_megasc.htm > $$
mv $$ d_megasc.htm
# Busca a quantidade de sorteios realizados
jogos=`tail -n 23 d_megasc.htm | head -n 1 | sed 's/<td>//' | sed 's/<\/td>//'`
echo $jogos sorteios realizados
# Loop que elimina as marcações HTML
while [ $contador -le $jogos ]
do
for i in `seq $inicio 1 $fim`
do
head -n $i d_megasc.htm | tail -n 1 | sed 's/<td>//g' | sed 's/<\/td>//g'
done
let inicio=$inicio+21 # A cada 21 linhas uma nova sequência do sorteio
let fim=$fim+21
let contador=$contador+1
done > /tmp/sena1.txt
echo Exibindo a frequencia dos numeros sorteado da Mega Sena
for i in `seq 9`
do
printf "0$i `grep 0$i /tmp/sena1.txt | wc -l` "
done
printf "10 `grep 10 /tmp/sena1.txt | wc -l` "
printf "\n"
inicio=11
fim=20
while [ $inicio -le 60 ] # Conta a frequencia dos 60 números da Mega Sena
do
for i in `seq $inicio 1 $fim`;
do
printf "$i `grep $i /tmp/sena1.txt | wc -l` "
done
printf "\n"
let inicio=$inicio+10
let fim=$fim+10
done
# Para efeito de tabulação, separa-se os números de 1 e 2 algarismos
for i in `seq 9`; do printf "0$i `grep 0$i /tmp/sena1.txt | wc -l`\n" ; done >> /tmp/sena2.txt
for i in `seq 10 1 60`; do printf "$i `grep $i /tmp/sena1.txt | wc -l`\n" ; done >> /tmp/sena2.txt
# Ordena de acordo com a frequencia sorteada
awk '{printf "%3s %3s\n",$2, $1}' /tmp/sena2.txt | sort -n | tail -n 6 > /tmp/sena3.txt
printf "\n"
echo Os numeros mais sorteados sao:
echo Dezena Frequencia
# Exibe as 6 dezenas mais frequentes (do maior para o menor)
for i in `seq 6`
do
tail -n $i /tmp/sena3.txt | head -n 1 | awk '{printf "%4s %8s\n",$2, $1}'
done
if [ -f d_megasc.htm ]
then
rm d_megasc.htm
fi
O resultado do script, executado até o concurso 1454 é exibido a seguir:
1454 sorteios Exibindo a frequencia dos numeros sorteado da Mega Sena 01 135 02 143 03 144 04 159 05 177 06 137 07 146 08 150 09 126 10 151 11 136 12 153 13 155 14 134 15 133 16 154 17 157 18 138 19 141 20 140 21 127 22 123 23 150 24 158 25 137 26 117 27 145 28 152 29 158 30 149 31 144 32 152 33 163 34 146 35 136 36 148 37 147 38 141 39 134 40 141 41 155 42 156 43 160 44 146 45 130 46 130 47 147 48 132 49 156 50 155 51 161 52 156 53 160 54 162 55 132 56 143 57 140 58 140 59 146 60 140 Os numeros mais sorteados sao: Dezena Frequencia 05 177 33 163 54 162 51 161 53 160 43 160 real 1m1.930s
Olá Murilo, muito interessante seus códigos. Assim como vc eu também gosto de aliar a matemática com a programação e resolver problemas interessantes. Ultimamente estou desenvolvendo um software em java para megasena colocando as estatísticas mais relevantes ...Vou utilizar também estas aqui do seu algoritmo. Parabéns pelo blog e continue postando mais códigos.
ResponderExcluirpoxa podia melhorar
ResponderExcluirSim, sempre podemos melhorar. Por favor, qual é a sua sugestão?
ResponderExcluirBoa noite, Murilo!
ResponderExcluirAo rodar o código, estou recebendo o seguinte:
Archive: D_mgsasc.zip
inflating: d_megasc.htm
extracting: t2.gif
td rowspan="1">29/01/2020 sorteios realizados
./loto.sh: linha 37: [: td: esperava expressão de número inteiro
Exibindo a frequencia dos numeros sorteado da Mega Sena
Poderia me ajudar a entender o motivo do erro?
Grato!
Boa noite, Ricardo.
ExcluirEstudarei o caso e verei como consertar esse bug.
Obrigado pelo aviso!