
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
___
___
__________
將第三列視為數字。