sort命令的-k我之前一般这么用:
sort -k2 xxx.txt表示xxx.txt,我的理解是:按照第二列排序
但实际并不是这样的。
这句话的意思是从第二列开始按字符串ascii码比较,第二列排序之后会继续往后面排,一直比较到行末。
所以这样sort -k2 xxx.txt这些用法有时候结果总是不准确。
正确用法是:
sort -k2,2 xxx.txt 这里的-k选项后面是start [,end],即开始比较为第2列,结束比较也是第2列,即只比较第二列。
举例:
~$ cat text
1|101|2
1|10|2
~$ sort -t "|" -k 2 text #第二列的101和10比较之后,剩下的1会和"|"按照ascii码比较,最后再是2和2比较,所以结果并不是我们想要的那样,(我们想要按照第二列排序)
1|101|2
1|10|2
~$ sort -t "|" -k 2,2 text #正确用法
1|10|2
1|101|2