sort – ¿Por qué ordena cambiar el orden de las líneas con claves de ordenación idénticas?

Pregunta:

Aquí están los datos:

D 2
B 2
A 2

Cuando ejecuto este comando:

sort -k2,2 file

produce:

A 2
B 2
D 2

Mi pregunta es que cuando especifico solo la segunda columna -k2,2 , ¿por qué también se ordena por la primera columna? Dado que todos los valores de la segunda columna son iguales, debe dejarla como está.

Respuesta:

Esa es la comparación de último recurso . Al comparar dos líneas, si todas las claves son iguales, entonces, como último recurso, se realiza una comparación básica de cadenas de todas las líneas ( -r todavía se aplica pero no las otras opciones). POSIX especifica ese comportamiento:

Excepto cuando se especifica la opción -u, las líneas que de otro modo se comparan iguales se ordenarán como si ninguna de las opciones -d, -f, -i, -n o -k estuvieran presentes (pero con -r todavía en efecto, si se especificó) y con todos los bytes en las líneas significativas para la comparación. El orden en el que se escriben las líneas que aún se comparan son iguales no se especifica.

Con GNU sort , esa comparación de último recurso se puede desactivar con la opción -s / --stable ¹.


¹ ya que el algoritmo de clasificación utilizado por GNU sort es estable , por lo que deshabilitar la comparación de último recurso da como resultado una clasificación estable. .

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım