概述
有时候,要对一行中的某列字段进行排序,这时可以用-t选项指定字段分隔符,用-k start[,end] 来指定列,列从1开始编
原文件:
$ cat test3.txt
Jan|1|100
Feb|2|200
Nov|11|80
Oct|10|90
要对第二列按数字大小排序
$ sort -t "|" -k 2,2n test3.txt
Jan|1|100
Feb|2|200
Oct|10|90
Nov|11|80
-k 2,2 代表对第二列进行排序,n修饰符代表按数字大小排序。
如果没有n,就会按字符串进行排序:
$ sort -t "|" -k 2,2 test3.txt
Jan|1|100
Oct|10|90
Nov|11|80
Feb|2|200
这里,第二列的数字被作为字符串进行排序。
-k 选项的参数格式是 -k start[,end],注意,这里如果省略了end,就会从start开始一直比较到行尾。
$ sort -t "|" -k 2 test3.txt
Oct|10|90
Nov|11|80
Jan|1|100
Feb|2|200
先修改原文件:
$ cat test3.txt
Jan|1|100
Feb|2|200
Nov|1|280
Oct|2|90
$ sort -t "|" -k 2,2n -k3,3nr test3.txt
Nov|1|280
Jan|1|100
Feb|2|200
Oct|2|90
如果要实现先按第二列的数字大小排序,再按第一列的月份顺序倒序排序 则:
$ sort -t "|" -k 2,2n -k1,1Mr test3.txt
Nov|1|280
Jan|1|100
Oct|2|90
Feb|2|200
这里,M修饰符用于按英文简写的月份排序,Jan - Feb - ....... Nov - Dec。
利用-k选项,还可以实现跨字段跨字符的排序
修改源文件为:
$ cat test3.txt
Jan|2|300
Fen|2|250
$ sort -t "|" -k 1.3,3.2 test3.txt
Fen|2|250
Jan|2|300
看完以上这些,应该就对sort多列排序应用自如了。
最后
以上就是坚定火为你收集整理的gnu sort命令多列排序的全部内容,希望文章能够帮你解决gnu sort命令多列排序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复