Eu não sei exatamente o que você está perguntando. Supondo que você queira encontrar a última versão listada no link , você pode fazer isso:
curl -s http://dl.4players.de/ts/releases/ | \
grep -Po '(?<=href=")[0-9]+(\.[0-9]+){2,3}(?=/")' | \
sort -Vr | head -1
Exemplo de saída:
3.0.16
Explicação:
-
Note que o diretório listando HTML segue um padrão razoavelmente regular :
<tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="3.0.0/">3.0.0/</a></td><td align="right">10-Aug-2011 16:57 </td><td align="right"> - </td><td> </td></tr> <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="3.0.1/">3.0.1/</a></td><td align="right">17-Nov-2011 08:43 </td><td align="right"> - </td><td> </td></tr>Todos os links da pasta de versão são criados com
href="X.Y.Z[.A]/",A,X,YeZsendo números. -
Portanto, podemos
greppara este padrão:(?<=href=")[0-9]+(\.[0-9]+){2,3}(?=/"). Eu usei regexes Perl (-P) para lookaheads e lookbehinds (para que a string seja envolvida porhref="e/", mas esses dois não fazem parte da correspondência real). O regex[0-9]+(\.[0-9]+){2,3}significa:- Um ou mais dígitos:
[0-9]+, seguido por - Um grupo que consiste em um período e um ou mais dígitos (
(\.[0-9]+)), repetidos duas ou três vezes ({2,3}).
- Um ou mais dígitos:
-
Em seguida, fazemos a versão
sorte obtemos o resultado principal.
Ordinariamente, não se deve usar expressões regulares para analisar HTML . No entanto, acho que de vez em quando uma exceção pode ser feita.