Supongamos que tengo este archivo
b 10 foo
a 10 bar
a 2 bar
Quiero ordenar por la tercera columna, alfabéticamente. En caso de empates, quiero ordenar por la segunda columna, numéricamente. En la página de manual del programa de clasificación Unix encontrará esto:
> sort -k3 -k2n a
Lo que da
a 2 bar
a 10 bar
b 10 foo
Cual es correcta.
Ahora, lo que realmente quiero es ordenar por la primera columna, alfabéticamente, y en caso de empates, por la segunda columna, numéricamente. ¿Alguien puede explicarme por qué?
> sort -k1 -k2n a
Da
a 10 bar
a 2 bar
b 10 foo
¿Qué está completamente mal?
Respuesta1
La razón por la que su ejemplo no funciona como esperaba es que sort
considera todas las posiciones.despuésel especificado también. En su ejemplo, el diccionario ordena -k1
la cadena a 10 bar
antes a 2 bar
y no necesita un desempate.
Debe especificar explícitamente los límites de la clave de clasificación, como se describe en la página del manual:
-k, --key=POS1[,POS2]
start a key at POS1, end it at POS2 (origin 1)
Ejemplo:
$ sort -k1,1 -k2n theFile
a 2 bar
a 10 bar
b 10 foo