classificação por diferentes colunas em uma sequência ou classificação por múltiplas colunas de uma só vez

classificação por diferentes colunas em uma sequência ou classificação por múltiplas colunas de uma só vez

Qual é a diferença entre sort -t' ' -k1,1n -k2,2ne sort -t' ' -k1,2n?

Você poderia dar exemplos?

Eu tentei:

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

Eu acho que sort -k2,3classifica 'idade 1', 'idade 100', ... e sort -k2,2 -k3,3classifica 'idade', 'idade',... depois '1', '100', .... Como todos tratam colunas como strings, eles produzir o mesmo resultado.

Mas sort -k2,2 -k3,3nproduz resultados diferentes porque trata a coluna 3 como números.

Mas então:

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

o que é estranho. Descobri que o motivo é porque a coluna 2 não contém 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
__________

Obrigado.

Responder1

Posso ver o que está acontecendo pela --debugbandeira.

sort -k2,3na verdade, classifica 'idade 1', 'idade 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,3classifica por 'idade',... depois '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 a terceira coluna como números.

informação relacionada