shell命令之sort
来源:互联网 发布:安知玉如意 编辑:程序博客网 时间:2024/06/14 20:16
本文主要源自Linux Shell sort排序常用命令
sort命令按行,依据字典顺序进行升序排序。
对于文件file.txt:
bananaapplepearorangepear
最简单的就是直接排序,即
sort file.txt输出:applebananaorangepearpear
使用-r降序,即
sort -r file.txt输出:pearpearorangebananaapple
使用-u去掉重复行,即
sort -u file.txt输出:applebananaorangepear
sort默认输出到标准输出,借助重定向可以输出到文件,但是sort file.txt > file.txt 会使得file.txt为空,这里可以借助-o选项,即
sort file.txt -o file.txt输出:applebananaorangepearpear
sort默认按照字符排序,即便是数值文件,也会是字符字典排序,这时候当排序可以使用-n。
对于文件num.txt:
110191125
常规排序:
sort num.txt输出:110111925
按数字排序:
sort -n num.txt输出:125101119
下面是-t和-k选项,现有文件com.txt:
google 110 5000baidu 100 5000guge 50 3000sohu 100 4500
分别是公司名,人数和平均工资。-t是分隔符,-k是第几个域。
1、按照公司人数排序
sort -n -t ' ' -k 2 com.txt输出:guge 50 3000baidu 100 5000sohu 100 4500google 110 5000
当公司人数都是100时,又按照baidu排在sohu前当顺序排列。
2、按照公司人数排序 ,人数相同的按照员工平均工资升序排序
sort -n -t ' ' -k 2 -k 3 com.txt输出:guge 50 3000sohu 100 4500baidu 100 5000google 110 5000
上述先按照第二个字段排序,然后按照第三个字段排序
3、按照员工工资降序排序,如果员工人数相同的,则按照公司人数升序排序
sort -n -t ' ' -k 3r -k 2 com.txt输出:baidu 100 5000google 110 5000sohu 100 4500guge 50 3000
继续-k的用法,[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ],即[开始域[.开始域的开始位置][命令]][,结束域[.结束域的结束位置]]。还是举例比较清楚。这个Modifier就类似与上面的sort -n -t ' ' -k 3r -k 2 com.txt
的r。
4、从公司英文名称的第二个字母开始进行排序
sort -t ' ' -k 1.2 com.txt输出:baidu 100 5000sohu 100 4500google 110 5000guge 50 3000
上面表示从第一个域的第二个字符开始排序,所以ohu比oog靠前。
5、只针对公司英文名称的第二个字母进行排序,如果相同的按照员工工资进行降序排序
sort -t ' ' -k 1.2,1.2 -k 3nr com.txt输出:baidu 100 5000google 110 5000sohu 100 4500guge 50 3000
当-u和-k同时使用时,-u关注的是-k的那个字段。
sort -n -k 2 -u com.txt输出:guge 50 3000baidu 100 5000google 110 5000
由于sohu也是100员工,所以被干掉了。同理,下面的例子输出为:
sort -k 1.1,1.1 -u com.txtbaidu 100 5000google 110 5000sohu 100 4500
6、最诡异的排序:
sort -n -k 2.2,3.1 com.txtguge 50 3000baidu 100 5000sohu 100 4500google 110 5000
以第二个域的第二个字符开始到第三个域的第一个字符结束的部分进行排序。
第一行,会提取0 3,第二行提取00 5,第三行提取00 4,第四行提取10 5。又因为sort认为0小于00小于000小于0000….因此0 3肯定是在第一个。10 5肯定是在最后一个。但为什么00 5却在00 4前面呢?因为sort只会比较第二个域的第二个字符到第二个域的最后一个字符的部分,而不会把第三个域的开头字符纳入比较范围。
- shell之sort命令
- shell命令之sort
- LINUX SHELL之SORT命令
- Linux shell之sort命令
- Linux Shell之sort命令
- Linux Shell之sort命令
- Linux Shell之sort命令
- Linux Shell之sort命令
- Shell基础之-sort命令
- Linux Shell之sort命令
- Linux Shell之sort命令
- shell脚本之sort命令
- Linux Shell之sort命令
- Linux Shell之sort命令
- shell学习之sort命令(一)
- 6 shell命令之sort,uniq
- Linux Shell之sort命令(转)
- [SHELL]:sort 命令详解
- bzoj 4484: [Jsoi2015]最小表示 拓扑排序+bitset
- spring bean 配置
- 形态学图像处理
- GAN人脸修复--Generative Face Completion
- 初识python3.0 (1)字符串
- shell命令之sort
- jenkins安装与使用(Linux下)
- J
- Dji 实现数据透传注意事项
- RT3070开发过程总结
- Java自定义注解和反射获取注解
- 系统开发中日志的使用
- C--最短路(Bellman-Ford算法)
- Javascript 面向对象编程(一):封装