Error de clasificación o malentendido

Error de clasificación o malentendido

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 sortconsidera todas las posiciones.despuésel especificado también. En su ejemplo, el diccionario ordena -k1la cadena a 10 barantes a 2 bary 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

información relacionada