ordenar por diferentes columnas en una secuencia o ordenar por varias columnas a la vez

ordenar por diferentes columnas en una secuencia o ordenar por varias columnas a la vez

¿Cuál es la diferencia entre sort -t' ' -k1,1n -k2,2ny sort -t' ' -k1,2n?

¿Podrías dar ejemplos?

He intentado:

logan@logan-mainPC:~/my-test/learn-sort$ cat myage 
my age 1
my age 100
my age 2
my age 200
logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort -k2,3
my age 1
my age 100
my age 2
my age 200
logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort -k2,2 -k3,3
my age 1
my age 100
my age 2
my age 200
logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort -k2,2 -k3,3n
my age 1
my age 2
my age 100
my age 200

Creo que sort -k2,3ordena 'edad 1', 'edad 100', ... y sort -k2,2 -k3,3ordena 'edad', 'edad',... luego '1', '100', .... Dado que todos tratan las columnas como cadenas, producir el mismo resultado.

Pero sort -k2,2 -k3,3nproduce un resultado diferente porque trata la columna 3 como números.

Pero entonces:

logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort -k2,3n
my age 1
my age 100
my age 2
my age 200

lo cual es extraño. Descubrí que el motivo es que la columna 2 no son números.

logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort --debug -k2,3n
sort: using ‘en_AU.UTF-8’ sorting rules
sort: key 1 is numeric and spans multiple fields
my age 1
   ^ no match for key
________
my age 100
   ^ no match for key
__________
my age 2
   ^ no match for key
________
my age 200
   ^ no match for key
__________

Gracias.

Respuesta1

Puedo ver lo que está sucediendo por --debugbandera.

sort -k2,3de hecho, ordena 'edad 1', 'edad 100',...

logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort --debug -t' ' -k2,3
sort: using ‘en_AU.UTF-8’ sorting rules
my age 1
   _____
________
my age 100
   _______
__________
my age 2
   _____
________
my age 200
   _______
__________

sort -k2,2 -k3,3ordena por 'edad',... luego '1', '100', ...

logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort --debug -t' ' -k2,2 -k3,3
sort: using ‘en_AU.UTF-8’ sorting rules
my age 1
   ___
       _
________
my age 100
   ___
       ___
__________
my age 2
   ___
       _
________
my age 200
   ___
       ___
__________

Por último

logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort --debug -t' ' -k2,2 -k3,3n
sort: using ‘en_AU.UTF-8’ sorting rules
my age 1
   ___
       _
________
my age 2
   ___
       _
________
my age 100
   ___
       ___
__________
my age 200
   ___
       ___
__________

trata la tercera columna como números.

información relacionada