
В чем разница между sort -t' ' -k1,1n -k2,2n
и sort -t' ' -k1,2n
?
Не могли бы вы привести примеры?
Я пробовал:
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
Я думаю, что sort -k2,3
сортировки «возраст 1», «возраст 100», ... и sort -k2,2 -k3,3
сортировки «возраст», «возраст», ... затем «1», «100», .... Поскольку все они обрабатывают столбцы как строки, они выдают один и тот же результат.
Но sort -k2,2 -k3,3n
результат получается другой, поскольку столбец 3 обрабатывается как числа.
Но потом:
logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort -k2,3n
my age 1
my age 100
my age 2
my age 200
что странно. Выяснилось, что причина в том, что столбец 2 — это не числа.
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
__________
Спасибо.
решение1
Я вижу, что происходит по --debug
флагу.
sort -k2,3
действительно сортирует «возраст 1», «возраст 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
сортирует по «возрасту»,... затем «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
___
___
__________
Наконец
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
___
___
__________
рассматривает третий столбец как числа.