сортировка по разным столбцам в последовательности или сортировка по нескольким столбцам одновременно

сортировка по разным столбцам в последовательности или сортировка по нескольким столбцам одновременно

В чем разница между 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
   ___
       ___
__________

рассматривает третий столбец как числа.

Связанный контент