New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

zzfutebol quebrada no BSD (awk) #170

Closed
aureliojargas opened this Issue Mar 3, 2015 · 13 comments

Comments

Projects
None yet
3 participants
@aureliojargas
Member

aureliojargas commented Mar 3, 2015

Aqui no meu Mac (que usa o awk do BSD, que é diferente daquele do Linux), a função não retorna nada:

$ zzfutebol

$
  • O lynx baixou os dados do site, tudo certo.
  • A variável $listajogos está vazia, então o awk não "grepou" nada.

Testei aqui e meu awk suporta \t, + e [:alpha:] nas regex, então não seria este o problema. Também não usa o ou | nas regex, que poderia ser outra fonte de problema no BSD.

Como não manjo nada de awk, não tenho mais ideias. @itamarnet? @faustovaz?

Independente deste problema, uma sugestão que dou pra simplificar o código, é apagar todos os tabs (ou trocá-los por espaços) antes do awk. Assim você não precisa se preocupar com eles nas regex.

$ZZWWWDUMP $url | tr -d '\t' | awk '{
    # ...
}'
@aureliojargas

This comment has been minimized.

Show comment
Hide comment
@aureliojargas

aureliojargas Mar 3, 2015

Member

Brinquei um pouco aqui com o arquivo baixado (guardei em foo.txt) e pelo que entendi, se grepar as linhas com datas e as linhas com _____, o resultado virá na ordem correta de data + times, em duas linhas.

$ cat foo.txt | egrep '03/03/15|___'  | head
   ____________________
   03/03/15 15h00 Copa da Alemanha
   BAY Bayer Leverkusen   ____________________ X ____________________   Kaiserslautern KAI
   03/03/15 15h00 Copa da Alemanha
   AAL Aalen   ____________________ X ____________________   Hoffenheim HOF
   03/03/15 15h00 Pernambucano
   APE América-PE  _____________________ X_____________________   Porto-PE CAP
   03/03/15 16h30 Copa da Alemanha
   FRE Freiburg   ____________________ X ____________________   Colônia KLN
   03/03/15 16h30 Copa da Alemanha
$

Em sed, eu juntaria os pares de linhas, sempre iniciando com a linha que começa com uma data:

$ cat foo.txt | egrep '03/03/15|___' | sed 's/^ *//' | sed -n '/^[0-9]/ { N; s/\n/ /p; }'
03/03/15 15h00 Copa da Alemanha BAY Bayer Leverkusen   ____________________ X ____________________   Kaiserslautern KAI
03/03/15 15h00 Copa da Alemanha AAL Aalen   ____________________ X ____________________   Hoffenheim HOF
03/03/15 15h00 Pernambucano APE América-PE  _____________________ X_____________________   Porto-PE CAP
03/03/15 16h30 Copa da Alemanha FRE Freiburg   ____________________ X ____________________   Colônia KLN
03/03/15 16h30 Copa da Alemanha DDR Dynamo Dresden   ____________________ X ____________________   Borussia Dortmund BVB
03/03/15 16h45 Inglês AST Aston Villa   ____________________ X ____________________   West Bromwich Albion WBA
03/03/15 16h45 Inglês HUL Hull City   ____________________ X ____________________   Sunderland SUN
03/03/15 16h45 Inglês SOU Southampton   ____________________ X ____________________   Crystal Palace CRY
03/03/15 17h00 Copa da França BOU Boulogne   ____________________ X ____________________   Saint-Etienne SET
03/03/15 19h45 Libertadores BGU Barcelona-EQU   ____________________ X ____________________   Libertad LIB
03/03/15 20h00 Copa do Nordeste FOR Fortaleza   ____________________ X ____________________   River-PI RAC
03/03/15 20h00 Gaúcho AIM Aimoré-RS  _____________________ X_____________________   São José-RS SJO
03/03/15 20h00 Pernambucano VCR Vera Cruz   ____________________ X ____________________   Atlético-PE APE
03/03/15 20h00 Pernambucano PES Pesqueira   ____________________ X ____________________   Ypiranga-PE YPI
03/03/15 20h45 Libertadores MIN Mineros de Guaiana   ____________________ X ____________________   Universitario de Sucre UNS
03/03/15 21h30 Copa do Brasil VLH Vilhena   ____________________ X ____________________   Ponte Preta PON
03/03/15 22h00 Libertadores CRU Cruzeiro   ____________________ X ____________________   Huracán HUR

Daí pra frente seria uma questão de formatar o resultado, mas as informações já estão agrupadas em linhas.

Não sei como fazer algo similar em awk, mas talvez essa ideia de primeiro usar o grep para já limpar inicialmente o resultado, deixando somente as linhas que interessam, simplificará as coisas.

Member

aureliojargas commented Mar 3, 2015

Brinquei um pouco aqui com o arquivo baixado (guardei em foo.txt) e pelo que entendi, se grepar as linhas com datas e as linhas com _____, o resultado virá na ordem correta de data + times, em duas linhas.

$ cat foo.txt | egrep '03/03/15|___'  | head
   ____________________
   03/03/15 15h00 Copa da Alemanha
   BAY Bayer Leverkusen   ____________________ X ____________________   Kaiserslautern KAI
   03/03/15 15h00 Copa da Alemanha
   AAL Aalen   ____________________ X ____________________   Hoffenheim HOF
   03/03/15 15h00 Pernambucano
   APE América-PE  _____________________ X_____________________   Porto-PE CAP
   03/03/15 16h30 Copa da Alemanha
   FRE Freiburg   ____________________ X ____________________   Colônia KLN
   03/03/15 16h30 Copa da Alemanha
$

Em sed, eu juntaria os pares de linhas, sempre iniciando com a linha que começa com uma data:

$ cat foo.txt | egrep '03/03/15|___' | sed 's/^ *//' | sed -n '/^[0-9]/ { N; s/\n/ /p; }'
03/03/15 15h00 Copa da Alemanha BAY Bayer Leverkusen   ____________________ X ____________________   Kaiserslautern KAI
03/03/15 15h00 Copa da Alemanha AAL Aalen   ____________________ X ____________________   Hoffenheim HOF
03/03/15 15h00 Pernambucano APE América-PE  _____________________ X_____________________   Porto-PE CAP
03/03/15 16h30 Copa da Alemanha FRE Freiburg   ____________________ X ____________________   Colônia KLN
03/03/15 16h30 Copa da Alemanha DDR Dynamo Dresden   ____________________ X ____________________   Borussia Dortmund BVB
03/03/15 16h45 Inglês AST Aston Villa   ____________________ X ____________________   West Bromwich Albion WBA
03/03/15 16h45 Inglês HUL Hull City   ____________________ X ____________________   Sunderland SUN
03/03/15 16h45 Inglês SOU Southampton   ____________________ X ____________________   Crystal Palace CRY
03/03/15 17h00 Copa da França BOU Boulogne   ____________________ X ____________________   Saint-Etienne SET
03/03/15 19h45 Libertadores BGU Barcelona-EQU   ____________________ X ____________________   Libertad LIB
03/03/15 20h00 Copa do Nordeste FOR Fortaleza   ____________________ X ____________________   River-PI RAC
03/03/15 20h00 Gaúcho AIM Aimoré-RS  _____________________ X_____________________   São José-RS SJO
03/03/15 20h00 Pernambucano VCR Vera Cruz   ____________________ X ____________________   Atlético-PE APE
03/03/15 20h00 Pernambucano PES Pesqueira   ____________________ X ____________________   Ypiranga-PE YPI
03/03/15 20h45 Libertadores MIN Mineros de Guaiana   ____________________ X ____________________   Universitario de Sucre UNS
03/03/15 21h30 Copa do Brasil VLH Vilhena   ____________________ X ____________________   Ponte Preta PON
03/03/15 22h00 Libertadores CRU Cruzeiro   ____________________ X ____________________   Huracán HUR

Daí pra frente seria uma questão de formatar o resultado, mas as informações já estão agrupadas em linhas.

Não sei como fazer algo similar em awk, mas talvez essa ideia de primeiro usar o grep para já limpar inicialmente o resultado, deixando somente as linhas que interessam, simplificará as coisas.

@itamarnet

This comment has been minimized.

Show comment
Hide comment
@itamarnet

itamarnet Mar 3, 2015

Contributor

Aurelio, agora estou longe do meu micro, mas como sugestão na função original tenta isso na linha 42:

if(imprimir==1){ no lugar de if(imprimir){

Contributor

itamarnet commented Mar 3, 2015

Aurelio, agora estou longe do meu micro, mas como sugestão na função original tenta isso na linha 42:

if(imprimir==1){ no lugar de if(imprimir){

@itamarnet

This comment has been minimized.

Show comment
Hide comment
@itamarnet

itamarnet Mar 4, 2015

Contributor

Aproveitando um pouco da sua idéia, mais um pitacos meus, refiz o código misturando sed, awk e grep.
Acho que esse deve funcionar também no MAC ou qq outro BSD.
Referência commit dbf33a2

Contributor

itamarnet commented Mar 4, 2015

Aproveitando um pouco da sua idéia, mais um pitacos meus, refiz o código misturando sed, awk e grep.
Acho que esse deve funcionar também no MAC ou qq outro BSD.
Referência commit dbf33a2

@itamarnet itamarnet closed this Mar 4, 2015

@aureliojargas

This comment has been minimized.

Show comment
Hide comment
@aureliojargas

aureliojargas Mar 4, 2015

Member

Show, agora está funcionando, valeu @itamarnet!

Só achei um probleminha:

$ zzfutebol
04/03/15 15h00 Copa da Alemanha                     RB Leipzig  x  Wolfsburg             
04/03/15 15h00 Copa da Alemanha              Arminia Bielefeld  x  Werder Bremen         
04/03/15 16h00 Copa do Brasil                      Boavista-RJ  x  ABC                   
04/03/15 16h00 Copa do Rei                          Villarreal  x  Barcelona             
04/03/15 16h30 Copa da Alemanha              Kickers Offenbach  x  Borussia Mgladbach    
[...]
07/03/15 16h00 Paulista                                 Ituano  x  Rio Claro             
07/03/15 16h00 Paulista                           São Bernardo x  São Bento            
07/03/15 16h15 Português               07/03/15 16h45 Italiano                                  Milan  x  Hellas Verona         
07/03/15 18h00 Cearense                                  Ceará x  Fortaleza             
07/03/15 18h00 Espanhol                            Granada-ESP  x  Málaga               
[...]
08/03/15 17h00 Gaúcho                                 Avenida  x  Passo Fundo           
08/03/15 17h00 Gaúcho                             Cruzeiro-RS  x  São Paulo-RS         
08/03/15 17h00 Português                             Sporting  x  Penafiel              
08/03/15 18h00 Gaúcho                  08/03/15 18h30 Carioca                              Fluminense  x  Botafogo              
08/03/15 18h30 Paranaense                             Coritiba  x  Londrina-PR           
08/03/15 18h30 Paulista                            Botafogo-SP  x  Santos                
08/03/15 19h00 Carioca                             Barra Mansa  x  Madureira             
[...]

Cortei algumas linhas da saída, mas veja como há duas linhas ali que "encavalaram", mostrando duas datas na mesma linha.

No teu também acontece isso?

Member

aureliojargas commented Mar 4, 2015

Show, agora está funcionando, valeu @itamarnet!

Só achei um probleminha:

$ zzfutebol
04/03/15 15h00 Copa da Alemanha                     RB Leipzig  x  Wolfsburg             
04/03/15 15h00 Copa da Alemanha              Arminia Bielefeld  x  Werder Bremen         
04/03/15 16h00 Copa do Brasil                      Boavista-RJ  x  ABC                   
04/03/15 16h00 Copa do Rei                          Villarreal  x  Barcelona             
04/03/15 16h30 Copa da Alemanha              Kickers Offenbach  x  Borussia Mgladbach    
[...]
07/03/15 16h00 Paulista                                 Ituano  x  Rio Claro             
07/03/15 16h00 Paulista                           São Bernardo x  São Bento            
07/03/15 16h15 Português               07/03/15 16h45 Italiano                                  Milan  x  Hellas Verona         
07/03/15 18h00 Cearense                                  Ceará x  Fortaleza             
07/03/15 18h00 Espanhol                            Granada-ESP  x  Málaga               
[...]
08/03/15 17h00 Gaúcho                                 Avenida  x  Passo Fundo           
08/03/15 17h00 Gaúcho                             Cruzeiro-RS  x  São Paulo-RS         
08/03/15 17h00 Português                             Sporting  x  Penafiel              
08/03/15 18h00 Gaúcho                  08/03/15 18h30 Carioca                              Fluminense  x  Botafogo              
08/03/15 18h30 Paranaense                             Coritiba  x  Londrina-PR           
08/03/15 18h30 Paulista                            Botafogo-SP  x  Santos                
08/03/15 19h00 Carioca                             Barra Mansa  x  Madureira             
[...]

Cortei algumas linhas da saída, mas veja como há duas linhas ali que "encavalaram", mostrando duas datas na mesma linha.

No teu também acontece isso?

@aureliojargas aureliojargas reopened this Mar 4, 2015

@itamarnet

This comment has been minimized.

Show comment
Hide comment
@itamarnet

itamarnet Mar 4, 2015

Contributor

Realmente não sei se isso acontece, mesmo porque não previ isso.
A noite em casa verifico, e corrijo.

Contributor

itamarnet commented Mar 4, 2015

Realmente não sei se isso acontece, mesmo porque não previ isso.
A noite em casa verifico, e corrijo.

@itamarnet

This comment has been minimized.

Show comment
Hide comment
@itamarnet

itamarnet Mar 4, 2015

Contributor

Aurelio aqui não acontece, a saída sai perfeita. Deve ser alguma nova incompatibilidade, mas que aqui não consigo decifrar.
Pode me mandar a saída desse comando?

$ZZWWWDUMP http://esporte.uol.com.br/futebol/agenda-de-jogos | sed -n '/[0-9]h[0-9]/p;/_ X/p'

Assim posso analisar melhor o que difere.

Contributor

itamarnet commented Mar 4, 2015

Aurelio aqui não acontece, a saída sai perfeita. Deve ser alguma nova incompatibilidade, mas que aqui não consigo decifrar.
Pode me mandar a saída desse comando?

$ZZWWWDUMP http://esporte.uol.com.br/futebol/agenda-de-jogos | sed -n '/[0-9]h[0-9]/p;/_ X/p'

Assim posso analisar melhor o que difere.

@aureliojargas

This comment has been minimized.

Show comment
Hide comment
@aureliojargas

aureliojargas Mar 5, 2015

Member

Segue saída, resumida:

$ $ZZWWWDUMP http://esporte.uol.com.br/futebol/agenda-de-jogos | sed -n '/[0-9]h[0-9]/p;/_ X/p'
[...]
   07/03/15 16h00 Mineiro
   TOM Tombense-MG   ____________________ X ____________________   URT URT
   07/03/15 16h00 Paulista
   ITU Ituano   ____________________ X ____________________   Rio Claro RCL
   07/03/15 16h00 Paulista
   SBE São Bernardo  _____________________ X_____________________   São Bento SBE
   07/03/15 16h15 Português
   07/03/15 16h45 Italiano
   MIL Milan   ____________________ X ____________________   Hellas Verona HVE
   07/03/15 18h00 Cearense
   CEA Ceará  _____________________ X_____________________   Fortaleza FOR
   07/03/15 18h00 Espanhol
   GRA Granada-ESP   ____________________ X ____________________   Málaga MAL
[...]

Realmente ele não vem com a linha dos times, naquele horário específico.

Deixa eu ver os dados originais como estão:

Novelli Jr.

   ITU Ituano   ____________________ X ____________________   Rio Claro RCL
   Novelli Jr. Itu
   07/03/15 16h00 Paulista

Primeiro de Maio

   SBE São Bernardo  _____________________ X_____________________   São Bento SBE
   Primeiro de Maio São Bernardo do Campo
   07/03/15 16h15 Português

Bonfim

   VIS Vitória de Setúbal ______________________ ______________________   Belenenses BEL
   Bonfim Setúbal
   07/03/15 16h45 Italiano

San Siro (Giuseppe Meazza)

   MIL Milan   ____________________ X ____________________   Hellas Verona HVE
   San Siro (Giuseppe Meazza) Milão
   07/03/15 18h00 Cearense

Olha só! O ___ X ___ não é padrão, às vezes vem sem espaço e às vezes vem sem X! Por isso a linha dos times não foi grepada...

Member

aureliojargas commented Mar 5, 2015

Segue saída, resumida:

$ $ZZWWWDUMP http://esporte.uol.com.br/futebol/agenda-de-jogos | sed -n '/[0-9]h[0-9]/p;/_ X/p'
[...]
   07/03/15 16h00 Mineiro
   TOM Tombense-MG   ____________________ X ____________________   URT URT
   07/03/15 16h00 Paulista
   ITU Ituano   ____________________ X ____________________   Rio Claro RCL
   07/03/15 16h00 Paulista
   SBE São Bernardo  _____________________ X_____________________   São Bento SBE
   07/03/15 16h15 Português
   07/03/15 16h45 Italiano
   MIL Milan   ____________________ X ____________________   Hellas Verona HVE
   07/03/15 18h00 Cearense
   CEA Ceará  _____________________ X_____________________   Fortaleza FOR
   07/03/15 18h00 Espanhol
   GRA Granada-ESP   ____________________ X ____________________   Málaga MAL
[...]

Realmente ele não vem com a linha dos times, naquele horário específico.

Deixa eu ver os dados originais como estão:

Novelli Jr.

   ITU Ituano   ____________________ X ____________________   Rio Claro RCL
   Novelli Jr. Itu
   07/03/15 16h00 Paulista

Primeiro de Maio

   SBE São Bernardo  _____________________ X_____________________   São Bento SBE
   Primeiro de Maio São Bernardo do Campo
   07/03/15 16h15 Português

Bonfim

   VIS Vitória de Setúbal ______________________ ______________________   Belenenses BEL
   Bonfim Setúbal
   07/03/15 16h45 Italiano

San Siro (Giuseppe Meazza)

   MIL Milan   ____________________ X ____________________   Hellas Verona HVE
   San Siro (Giuseppe Meazza) Milão
   07/03/15 18h00 Cearense

Olha só! O ___ X ___ não é padrão, às vezes vem sem espaço e às vezes vem sem X! Por isso a linha dos times não foi grepada...

@itamarnet

This comment has been minimized.

Show comment
Hide comment
@itamarnet

itamarnet Mar 5, 2015

Contributor

Cara que inusitado!
Isso parece ser alguma diferença no comportamento do lynx entre Linux e BSD.
Testei em casa em 3 máquinas diferentes com Slackware, Ubuntu e Mint, e em todas as respostas foram tranquilas.
Vou pensar melhor em como contornar esse problema, e depois pedirei que teste de novo!

E tentar identificar que comportamento é esse que muda entre os 2 sistemas.

Contributor

itamarnet commented Mar 5, 2015

Cara que inusitado!
Isso parece ser alguma diferença no comportamento do lynx entre Linux e BSD.
Testei em casa em 3 máquinas diferentes com Slackware, Ubuntu e Mint, e em todas as respostas foram tranquilas.
Vou pensar melhor em como contornar esse problema, e depois pedirei que teste de novo!

E tentar identificar que comportamento é esse que muda entre os 2 sistemas.

@aureliojargas

This comment has been minimized.

Show comment
Hide comment
@aureliojargas

aureliojargas Mar 5, 2015

Member

Opa, fiz a correção no 82773a7, depois vê aí na tua se ficou legal.

Member

aureliojargas commented Mar 5, 2015

Opa, fiz a correção no 82773a7, depois vê aí na tua se ficou legal.

@aureliojargas

This comment has been minimized.

Show comment
Hide comment
@aureliojargas

aureliojargas Mar 5, 2015

Member

Nesse caso, independente do problema bizarro que causou a diferença, o que fiz foi normalizar os dados, transformando todas as variações em ___ X ___, assim o algoritmo no awk não precisa se preocupar com isso.

No final, também normalizei a saída, que aqui aparecia de maneira variada, tipo:

Time1  x  Time2
Time1 x Time2
Time1 x  Time2

Agora é sempre igual, com somente um espaço ao redor do x. Se quiser mudar pra dois espaços, está fácil.

Member

aureliojargas commented Mar 5, 2015

Nesse caso, independente do problema bizarro que causou a diferença, o que fiz foi normalizar os dados, transformando todas as variações em ___ X ___, assim o algoritmo no awk não precisa se preocupar com isso.

No final, também normalizei a saída, que aqui aparecia de maneira variada, tipo:

Time1  x  Time2
Time1 x Time2
Time1 x  Time2

Agora é sempre igual, com somente um espaço ao redor do x. Se quiser mudar pra dois espaços, está fácil.

@itamarnet

This comment has been minimized.

Show comment
Hide comment
@itamarnet

itamarnet Mar 5, 2015

Contributor

Perfeito!
Vi o código e acho que funciona sim.
Infelizmente onde estou não dá pra testar, mas em casa verifico.
Valeu!

Contributor

itamarnet commented Mar 5, 2015

Perfeito!
Vi o código e acho que funciona sim.
Infelizmente onde estou não dá pra testar, mas em casa verifico.
Valeu!

@faustovaz

This comment has been minimized.

Show comment
Hide comment
@faustovaz

faustovaz Mar 5, 2015

Contributor

E ai pessoal, blz?
cheguei bem tarde na conversa. Fiz um teste com uma imagem do freebsd no virtualbox e a função, com as alterações que você fizeram, rodou normalmente.

Contributor

faustovaz commented Mar 5, 2015

E ai pessoal, blz?
cheguei bem tarde na conversa. Fiz um teste com uma imagem do freebsd no virtualbox e a função, com as alterações que você fizeram, rodou normalmente.

@itamarnet

This comment has been minimized.

Show comment
Hide comment
@itamarnet

itamarnet Mar 5, 2015

Contributor

Aqui ficou perfeito.......!!
Ótimo!!!

Contributor

itamarnet commented Mar 5, 2015

Aqui ficou perfeito.......!!
Ótimo!!!

@itamarnet itamarnet closed this Mar 5, 2015

@aureliojargas aureliojargas modified the milestone: Versão 2015 Mar 22, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment