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
排序'age 1','age 100',......然后sort -k2,2 -k3,3
排序'age','age',......然后'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
__________
谢谢。
--debug
我可以通过标志看到正在发生的事情。sort -k2,3
确实排序'1岁','100岁',......sort -k2,2 -k3,3
按“年龄”,...然后是“1”,“100”,...最后
将第三列视为数字。