
Qual é a diferença entre sort -t' ' -k1,1n -k2,2n
e 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,3
classifica 'idade 1', 'idade 100', ... e sort -k2,2 -k3,3
classifica 'idade', 'idade',... depois '1', '100', .... Como todos tratam colunas como strings, eles produzir o mesmo resultado.
Mas sort -k2,2 -k3,3n
produz 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 --debug
bandeira.
sort -k2,3
na 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,3
classifica 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.