Linux Shell 操作命令 目录总览(点击查看详细信息)

 

1、简介

    sort 命令能够帮助我们对文本文件和 stdin 进行排序操作;通常 会 结合其他命令来生成所需要的输出
    

2、用法/命令格式

    sort [选项] [文件名]
    

3、常用参数解析

参数 描述
-n 基于字符串的长度来排序,使用此选项允许根据数字值排序,而不是字母值
-k 指定排序关键字
-b 默认情况下,对整行进行排序,从每行的第一个字符开始。这个选项导致 sort 程序忽略每行开头的空格,从第一个非空白字符开始排序
-m 只合并多个输入文件
-r 按相反顺序排序,结果按照降序排列,而不是升序
-t 自定义分隔符,默认为制表符

    

4、常用案例

4.1 ceph 磁盘 使用率 查询(单列排序)

## -k 指定排序关键字
## -n 根据数字值排序,而不是字母值
# ceph osd df | sort -k 7 -n 
ID WEIGHT  REWEIGHT SIZE   USE    AVAIL  %USE  VAR  
MIN/MAX VAR: 0.00/1.37  STDDEV: 17.40
              TOTAL 55449G 13848G 41601G 24.97      
29 0.04999  1.00000 55810M 42004k 55769M  0.07 0.00 
12 1.00000  1.00000 55810M   292M 55518M  0.52 0.02 
13 1.00000  0.85999 55810M   361M 55449M  0.65 0.03 
10 0.04999  1.00000 55810M   370M 55440M  0.66 0.03 
 2 1.00000  0.92999 55810M   382M 55427M  0.69 0.03 
26 1.00000  1.00000  3704G   838G  2865G 22.63 0.91 
22 1.00000  0.92999  3704G   892G  2811G 24.09 0.96 
20 3.62000  0.85999  3704G   919G  2784G 24.82 0.99 
15 1.00000  0.92999  3704G   932G  2772G 25.16 1.01 
23 2.70999  1.00000  2773G   946G  1826G 34.12 1.37 

    

4.2 ceph 磁盘 使用率 查询(多列 排序)

4.2.1 语法解释

## Modifier 部分就是类似 n 和 r 的选项部分
## FStart.CStart 选定 大的范围
##     FStart 就是表示使用的域
##     CStart 则表示在 FStart 域中从第几个字符开始算“排序首字符”(FEnd 未设定时以这个为准)
##     CStart 是可以省略的,省略的话就表示从本域的开头部分开始
## FEnd.CEnd 选定 小的范围,可以不设定
##     FEnd 表示 从 第几列 排序
##     如果不设定 End 部分,那么就认为 End 被设定为行尾
##     如果你省略.CEnd,则表示结尾到“域尾”,即本域的最后一个字符
##     CEnd 设定为 0(零),也是表示结尾到“域尾”。
# ceph osd df | sort [ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]

    

4.2.2 事例

## 先选定 5 ~ 8 列
## 在 5 ~ 8 列之间,从第 七列 开始 排序,第八列 结束(不知道 怎么 就成了 降序了)
## 个人觉得 后面 的 缩小 列范围 是个 鸡肋 功能
# ceph osd df | sort -k 5.8n,7.8
ID WEIGHT  REWEIGHT SIZE   USE    AVAIL  %USE  VAR  
MIN/MAX VAR: 0.00/1.37  STDDEV: 17.40
              TOTAL 55449G 13848G 41601G 24.97      
23 2.70999  1.00000  2773G   946G  1826G 34.12 1.37 
15 1.00000  0.92999  3704G   932G  2772G 25.16 1.01 
20 3.62000  0.85999  3704G   919G  2784G 24.82 0.99 
22 1.00000  0.92999  3704G   892G  2811G 24.09 0.96 
26 1.00000  1.00000  3704G   838G  2865G 22.63 0.91 
 2 1.00000  0.92999 55810M   382M 55427M  0.69 0.03 
10 0.04999  1.00000 55810M   370M 55440M  0.66 0.03 
13 1.00000  0.85999 55810M   361M 55449M  0.65 0.03 
12 1.00000  1.00000 55810M   292M 55518M  0.52 0.02 
29 0.04999  1.00000 55810M 42004k 55769M  0.07 0.00 

    

4.3 去重(建议 使用 unique)

## 原谅我 没彻底 搞明白 这个 排序的逻辑思维,简单了解下
## 不想过多解释,对排序的 那一列 数值的数据 去重(只针对 数值 有效,字母无效)
## -u 去除 重复的行
# ceph osd df | sort -k 4 -n -u
GHT  REWEIGHT SIZE   USE    AVAIL  %USE  VAR  
23 2.70999  1.00000  2773G   946G  1826G 34.12 1.37 
15 1.00000  0.92999  3704G   932G  2772G 25.16 1.01 
              TOTAL 55449G 13848G 41601G 24.97      
 2 1.00000  0.92999 55810M   382M 55427M  0.69 0.03