介绍
sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出或重定向输出到指定文件。
语法
sort (options) 参数
| 选项 | 说明 |
|---|---|
| ==-n== | number,依照数值的大小排序 |
| ==-r== | reverse, 以相反的顺序来排序 |
| ==-t 分隔字符== | 设置排序时所用的分隔字符, 默认空格是分隔符 |
| ==-k== | 指定需要排序的列 |
| -d | 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。 |
| -f | 排序时,将小写字母视为大写字母 |
| -b | 忽略每行前面开始出的空格字符 |
| ==-o 输出文件== | 将排序后的结果存入指定的文件 |
| -u | 意味着是唯一的(unique),输出的结果是去完重了的 |
| -m | 将几个排序好的文件进行合并 |
参数:指定待排序的文件列表
数据准备
sort.txt文本文件代码
张三 30
李四 95
播仔 85
播仔 85
播仔 86
AA 85
播妞 100
示例1: 数字升序
按照“ ”空格分割后的第2列数字升序排序。
sort -t " " -k2n,2 sort.txt
# -t " " 代表使用空格分隔符拆分列
# -k 2n,2 代表根据从第2列开始到第2列结束进行数字升序, 仅对第2列排序
运行效果
示例2: 数字升序去重
先按照“ ”空格分割后的, 然后,按照第2列数字升序排序, 最后对所有列去重
sort -t " " -k2n,2 -uk1,2 sort.txt
运行效果
注意: 先排序再去重
示例3: 数字升序去重结果保存到文件
命令
sort -t " " -k2n,2 -uk1,2 -o sort2.txt sort.txt
运行效果
示例4: 数字降序去重
先按照“ ”空格分割后的, 然后,按照第2列数字降序排序, 最后对所有列去重
sort -t " " -k2nr,2 -uk1,2 sort.txt
运行效果
示例5: 多列排序
数据准备sort3.txt
公司A,部门A,3
公司A,部门B,0
公司A,部门C,10
公司A,部门D,9
公司B,部门A,30
公司B,部门B,40
公司B,部门C,43
公司B,部门D,1
公司C,部门A,30
公司C,部门B,9
公司C,部门C,100
公司C,部门D,80
公司C,部门E,60
要求: 以","分割先对第一列字符串升序, 再对第3列数字降序
sort -t "," -k1,1 -k3nr,3 sort3.txt
运行效果
小结
能够使用sort对字符串升序或降序排序
字符串升序:
sort -kstart,end 文件字符串降序:
sort -kstartr,end 文件
能够使用sort 对数字升序或降序
数字升序:
sort -kstartn,end 文件数字降序:
sort -kstartnr,end 文件
能够使用sort 对多列进行排序
sort -kstart[nr],end -kstart[nr],end ... 文件