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!