Suponha que eu tenha uma lista de tags de versão analisadas como
0.2
0.1
0.10
0.9
Se eu usar sort
, recebo (estou certo, isso é chamado de ordem de agrupamento?)
0.1
0.10
0.2
0.9
Se eu quiser a ordem numérica (lógica), esperaria
0.1
0.2
0.9
0.10
Este, por exemplo, é um cenário com o qual costumo entrar em contato, uma vez que analiso lançamentos de pacotes enquanto quero obter a versão mais recente para processos de instalação automatizados.
Como posso conseguir isso?
A classificação GNU tem a opção
-V
/--version-sort
destinada apenas para classificar números de versão. Ele produz exatamente a saída desejada e também lida com números de versão de várias partes, como0.10.123
.Com esse conjunto específico de dados, você também pode usar
sort -t. -k1,1n -k2,2n
. Ou seja, dizersort
para usar.
como separador de campo e, em seguida, classificar numericamente com base no primeiro e segundo campos nessa ordem. (-k1n
usaria o resto da linha começando no primeiro campo levando a um resultado diferente.)