首页 > 代码库 > 关于sort的小结
关于sort的小结
近日有朋友问到sort常用的一些问题,虽然觉得很简单,但是还是简单的总结下:
1)-u:选项消除重复
[root@localhost ~]# cat seq.txt banana apple apple pear orange orange [root@localhost ~]# sort -u seq.txt apple banana orange pear 如上:我们可以发现apple显示的只有一个了
2)-r:降序输出
[root@localhost ~]# cat number.txt 1 2 3 4 5 [root@localhost ~]# sort -r number.txt 5 4 3 2 1 如上:添加-r选项后,number.txt里面显示的内容的确是从高到低进行排序了
3)-o选项:导出
[root@localhost ~]# sort number.txt 1 2 3 4 5 [root@localhost ~]# sort number.txt >number.txt [root@localhost ~]# cat number.txt [root@localhost ~]# echo $? 0 说明:发现输出的number.txt文件为空 [root@localhost ~]# cat number.txt [root@localhost ~]# cat<<EOF>number.txt > 1 > 2 > 3 > 4 > 5 > EOF [root@localhost ~]# cat number.txt 1 2 3 4 5 [root@localhost ~]# sort -r number.txt -o number.bak [root@localhost ~]# cat number.bak 5 4 3 2 1 如上:使用-o选项后,可以很方便的进行保存
4)-n选项
说明:关于sort数字排序的困惑
a、“sort有时候会被我们认为抽风,比如说数字11居然比8小?”
b、出现这个现象并非偶然,可能是由于sort命令默认是按照字符来进行排序的,它会认为字符8在ASCII字符里是排在字符1后面,所以就将11排在8前面了
[root@localhost ~]# sort number.sort -u 1 10 11 19 2 21 3 4 43 44 5 8 使用-n选项,sort在输出的时候就会按照数值来排序了 [root@localhost ~]# sort -nu number.sort 1 2 3 4 5 8 10 11 19 21 43 44
5)tk选项
说明: -t选项,表明指定间隔符
-k选项,指定我们需要针对那一列来排序
[root@localhost ~]# cat fruit.txt # 文件内容说明: # 第一列表示水果类型 # 第二列表示水果数量 # 第三列表示水果价格 banana:30:5.5 apple:10:2.5 pear:90:2.3 orange:20:3.4 [root@localhost ~]# sort -n -k 2 -t : fruit.txt # 第二列表示水果数量 # 第三列表示水果价格 # 第一列表示水果类型 # 文件内容说明: apple:10:2.5 orange:20:3.4 banana:30:5.5 pear:90:2.3 [root@localhost ~]# sort -n -k 3 -t : fruit.txt # 第二列表示水果数量 # 第三列表示水果价格 # 第一列表示水果类型 # 文件内容说明: pear:90:2.3 apple:10:2.5 orange:20:3.4 banana:30:5.5
6)关于-k的详细解析
[root@localhost ~]# sort -t ` ` -k 1 facebook.txt sort: multi-character tab ‘-k‘ 说明:有一些sort可能不能直接使用-t "\t" 让tab作为分隔符,这个时候你可以转义tab,例如使用-t $‘\t‘ 这样就可以让tab成为分隔符了。 [root@localhost ~]# sort -t $‘\t‘ -k 1 facebook.txt baidu 100 5000 google 110 5000 sina 50 3000 sohu 100 4500 上面的输出信息可能是由于输入法的符号问题导致: [root@localhost ~]# sort -t ‘ ‘ -k 1 facebook.txt baidu 100 5000 google 110 5000 sina 50 3000 sohu 100 4500 -k 2 -k 3(说明设定排序的优先级,先以第2列进行排序,如果相同,再以第3列进行排序) [root@localhost ~]# sort -n -t ‘ ‘ -k 2 -k 3 facebook.txt sina 50 3000 sohu 100 4500 baidu 100 5000 google 110 5000
需求:让facebook.txt按照员工工资降序进行排序,对于员工工资相同的公司,则按照公司人数升序排序:
[root@localhost ~]# cat facebook.txt google 110 5000 baidu 100 5000 sina 50 3000 sohu 100 4500 [root@localhost ~]# sort -n -t ‘ ‘ -k 3r -k 2 facebook.txt baidu 100 5000 google 110 5000 sohu 100 4500 sina 50 3000
需求:按照月份进行排序(依照一月,二月,三月)
[root@localhost ~]# cat cal.txt January February June May [root@localhost ~]# sort -M cal.txt January February May June
还有一些sort的功能,由于我没怎么用到,所以也就不额外介绍了
本文出自 “冰冻vs西瓜” 博客,请务必保留此出处http://molewan.blog.51cto.com/287340/1878320
关于sort的小结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。