Tabela do Campeonato Brasileiro Direto no Terminal
![](http://www.noticiaki.com/wp-content/uploads/2011/04/campeonato-brasileiro-2011.jpg)
O Script mostra no terminal a tabela de classificação do campeonato brasileiro 2011. Essa tabela é obtida através do site do terra e as informações são extraídas pelo script.
A utilização é fácil, só executar:
$ ./campbra.sh
#!/bin/bash
# Autor: Daemonio (Marcos Paulo Ferreira)
# Contato: undefinido gmail com
#
# [campbra.sh]
# Script que mostra a tabela do campeonato brasileiro
# serie a. Ele esta configurado para mostrar a tabela
# do campeonato de 2011. Atraves da variavel SITE_TERRA
# voce pode apontar para a pagina de uma tabela de
# outro ano. O script ira funcionar somente se o terra
# manter o mesmo formato da pagina.
#
# [Execucao]
# $ ./campbra.sh
#
# [Dependencias]
# 1) wget
#
# Thu Jul 7 01:47:27 BRT 2011
# Thu Jul 7 11:19:34 BRT 2011
#
# Pagina usada para extrair as informacoes.
SITE_TERRA='http://esportes.terra.com.br/futebol'
SITE_TERRA=${SITE_TERRA}'/brasileiro/2011/seriea'
SITE_TERRA=${SITE_TERRA}'/classificacao_jogos'
# A pagina acima sera salva nesse arquivo.
ARQUIVO_TERRA=/tmp/tabelao$$
# Essa funcao recebe as informacoes de todos
# os times de uma vez so e monta uma tabela
# com esses dados.
function print_table() {
echo -n '[1;35m'
printf ' %'$ALIGN's %3s %3s %3s%3s %3s' 'Time' 'P' 'J' 'V' 'E' 'D'
printf ' %3s %3s %4s %2s' 'GP' 'GC' 'SG' '%'
echo '[0m'
while read _zone
do
read _position
read _name
read _points
read _j
read _v
read _e
read _d
read _gp
read _gc
read _sg
read _p
# Escolhe a cor apropriada para cada time.
case $_zone in
# Libertadores
'X1') _colorz='[1;33m'
;;
# Pre Libertadores
'X2') _colorz='[0;32m'
;;
# Sul Americana
'X3') _colorz='[1;36m'
;;
# Rebaixados
'X4') _colorz='[1;31m'
;;
# Os que nao fedem nem cheiram![Feliz](https://forum.guiadohacker.com.br/images/smilies/smile.png)
*) _colorz='[0;37m'
esac
# Monta uma linha da tabela (cada time).
echo -n $_colorz
printf '%2d %-'$ALIGN's %3d %3d %3d' $_position "$_name" $_points $_j $_v
printf '%3d %3d %3d %3d %4d %3d' $_e $_d $_gp $_gc $_sg $_p
echo '[m'
done
# Legenda.
echo
echo '[1;33m' '** Libertadores' '[m'
echo '[1;36m' '** Pre-Libertadores' '[m'
echo '[0;32m' '** Sul Americana' '[m'
echo '[1;31m' '** Rebaixados
' '[m'
echo
}
# Obtem as informacoes de todos os times.
function get_all_info() {
sed -n '/<tbody>/,/<\/tbody>/p' $ARQUIVO_TERRA
}
# Obtem o nome dos times. Essa funcao sera usada
# para obter o time com maior nome para assim fazer
# um alinhamento na hora de montar a tabela.
function get_team_names() {
sed -n '/main team-name/s/^[^>]*>[^>]*>\([^<]*\).*/\1/p'
}
# Sed rulezz..
# Aqui retira-se as tags html e obtem somente as
# info necessarias.
function do_it_sed() {
sed -n '
/<tbody>/b
/<\/tbody>/q
x; s/.*// ;x
s/^[^"]*"[-zone]*\([^ "]*\).*/X\1/ ; H; x; s/.//; x; n
s/^[^>]*>\([0-9]*\).*/\1/ ; H; n; n
s/^[^>]*>[^>]*>\([^<]*\).*/\1/ ; H; n; n
s/^[^>]*>\([0-9]*\).*/\1/ ; H; n
:loop
/^<\/tr>/bend
s/<td>\([-0-9]*\).*/\1/;
H; n; bloop
:end
g
p
'
}
#
# MAIN
#
# Baixando ...
echo '[+] Baixando a pagina da tabela do brasileirao... Espere.'
wget -q $SITE_TERRA -O $ARQUIVO_TERRA
# Obtem o alinhamento para a coluna nome dos times.
ALIGN=$(get_all_info | get_team_names | wc -L)
ALIGN=$((ALIGN+1))
# Do the job.![Feliz](https://forum.guiadohacker.com.br/images/smilies/smile.png)
get_all_info | do_it_sed | print_table
# Remove arquivos temporarios.
rm -f $ARQUIVO_TERRA
# EOF
# Autor: Daemonio (Marcos Paulo Ferreira)
# Contato: undefinido gmail com
#
# [campbra.sh]
# Script que mostra a tabela do campeonato brasileiro
# serie a. Ele esta configurado para mostrar a tabela
# do campeonato de 2011. Atraves da variavel SITE_TERRA
# voce pode apontar para a pagina de uma tabela de
# outro ano. O script ira funcionar somente se o terra
# manter o mesmo formato da pagina.
#
# [Execucao]
# $ ./campbra.sh
#
# [Dependencias]
# 1) wget
#
# Thu Jul 7 01:47:27 BRT 2011
# Thu Jul 7 11:19:34 BRT 2011
#
# Pagina usada para extrair as informacoes.
SITE_TERRA='http://esportes.terra.com.br/futebol'
SITE_TERRA=${SITE_TERRA}'/brasileiro/2011/seriea'
SITE_TERRA=${SITE_TERRA}'/classificacao_jogos'
# A pagina acima sera salva nesse arquivo.
ARQUIVO_TERRA=/tmp/tabelao$$
# Essa funcao recebe as informacoes de todos
# os times de uma vez so e monta uma tabela
# com esses dados.
function print_table() {
echo -n '[1;35m'
printf ' %'$ALIGN's %3s %3s %3s%3s %3s' 'Time' 'P' 'J' 'V' 'E' 'D'
printf ' %3s %3s %4s %2s' 'GP' 'GC' 'SG' '%'
echo '[0m'
while read _zone
do
read _position
read _name
read _points
read _j
read _v
read _e
read _d
read _gp
read _gc
read _sg
read _p
# Escolhe a cor apropriada para cada time.
case $_zone in
# Libertadores
'X1') _colorz='[1;33m'
;;
# Pre Libertadores
'X2') _colorz='[0;32m'
;;
# Sul Americana
'X3') _colorz='[1;36m'
;;
# Rebaixados
'X4') _colorz='[1;31m'
;;
# Os que nao fedem nem cheiram
![Feliz](https://forum.guiadohacker.com.br/images/smilies/smile.png)
*) _colorz='[0;37m'
esac
# Monta uma linha da tabela (cada time).
echo -n $_colorz
printf '%2d %-'$ALIGN's %3d %3d %3d' $_position "$_name" $_points $_j $_v
printf '%3d %3d %3d %3d %4d %3d' $_e $_d $_gp $_gc $_sg $_p
echo '[m'
done
# Legenda.
echo
echo '[1;33m' '** Libertadores' '[m'
echo '[1;36m' '** Pre-Libertadores' '[m'
echo '[0;32m' '** Sul Americana' '[m'
echo '[1;31m' '** Rebaixados
![Triste!](https://forum.guiadohacker.com.br/images/smilies/13021.gif)
echo
}
# Obtem as informacoes de todos os times.
function get_all_info() {
sed -n '/<tbody>/,/<\/tbody>/p' $ARQUIVO_TERRA
}
# Obtem o nome dos times. Essa funcao sera usada
# para obter o time com maior nome para assim fazer
# um alinhamento na hora de montar a tabela.
function get_team_names() {
sed -n '/main team-name/s/^[^>]*>[^>]*>\([^<]*\).*/\1/p'
}
# Sed rulezz..
# Aqui retira-se as tags html e obtem somente as
# info necessarias.
function do_it_sed() {
sed -n '
/<tbody>/b
/<\/tbody>/q
x; s/.*// ;x
s/^[^"]*"[-zone]*\([^ "]*\).*/X\1/ ; H; x; s/.//; x; n
s/^[^>]*>\([0-9]*\).*/\1/ ; H; n; n
s/^[^>]*>[^>]*>\([^<]*\).*/\1/ ; H; n; n
s/^[^>]*>\([0-9]*\).*/\1/ ; H; n
:loop
/^<\/tr>/bend
s/<td>\([-0-9]*\).*/\1/;
H; n; bloop
:end
g
p
'
}
#
# MAIN
#
# Baixando ...
echo '[+] Baixando a pagina da tabela do brasileirao... Espere.'
wget -q $SITE_TERRA -O $ARQUIVO_TERRA
# Obtem o alinhamento para a coluna nome dos times.
ALIGN=$(get_all_info | get_team_names | wc -L)
ALIGN=$((ALIGN+1))
# Do the job.
![Feliz](https://forum.guiadohacker.com.br/images/smilies/smile.png)
get_all_info | do_it_sed | print_table
# Remove arquivos temporarios.
rm -f $ARQUIVO_TERRA
# EOF