En bash , usar sort con la opción -n no me da el resultado esperado.
$ cat numbers | sort -n 1.0 1.1 1.11.4 1.15 1.3 1.3.3 1.4-p1 1.6.1 2.2.10 2.2.2 2.4 2.4.6 Intenté usar -k1 , -k1.1n , etc. ( -k1.3n obtiene el orden correcto solo para los números que comienzan con 1 ). Parece que hay algo muy básico que me estoy perdiendo aquí...
Hay una bandera especial para esto -V para números de versión
$ sort -V numbers 1.0 1.1 1.3 1.3.3 1.4-p1 1.6.1 1.11.4 1.15 2.2.2 2.2.10 2.4 2.4.6PD. esta opción está disponible en GNU Coreutils y puede faltar en otras implementaciones.
Necesitas la -t. bandera para especificar '.' como su separador, y los especificadores de posiciones clave múltiples manejan los números progresivamente más largos/más profundos. Todavía no entiendo exactamente cómo funciona, pero funciona...
sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n numberso
cat numbers | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4nsort -g numbers lo hará Según la página del manual de clasificación, -g está destinado a la clasificación numérica:
-g, --general-numeric-sort
comparar según el valor numérico general