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
,Y
eZ
sendo números. -
Portanto, podemos
grep
para 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
sort
e 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.