按序列中的不同列排序或一次按多列排序

按序列中的不同列排序或一次按多列排序

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
   ___
       ___
__________

將第三列視為數字。

相關內容