A classificação GNU tem -V
, que pode lidar principalmente com uma lista como essa ( detalhes ):
-V, --version-sort
natural sort of (version) numbers within text
$ cat vers
release-5.0.19
release-5.0.19~pre1
release-5.0.19-bigbugfix
release-5.0.2
release-5.0.20
$ sort -V vers
release-5.0.2
release-5.0.19~pre1
release-5.0.19
release-5.0.19-bigbugfix
release-5.0.20
No entanto, essas .rc*
versões podem ser um pouco problemáticas, uma vez que elas provavelmente devem ser classificadas antes da versão não-rc correspondente, se houver ambas, ou seja. Alguns sistemas de versionamento (como o do Debian) usam sufixos começando com um til ( ~
) para marcar os pré-lançamentos, e eles ordenam antes da versão sem um sufixo, que ordena antes das versões com outros sufixos. Aparentemente isso é suportado por pelo menos o sort
no meu sistema, como mostrado acima ( sort (GNU coreutils) 8.23
).