Linux常用命令-sort

命令

sort

描述

sort lines of text files
按行排序文件内容

用法

1
sort [OPTION]... [FILE]...

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Options:
-b 忽略行首空格
-d 只处理空格,字母和数字,忽略其他字符
-f 大写字母优先于小写字母,即Aa,Bb,...Zz
-g 按一般数值排序
-i 忽略不可打印字符
-M 月份排序,默认为unknown,JAN,...DEC
-h 按可读形式排序,如2K,3M,1G
-n 按字符串数值排序
-R 按hash随机排序
-r 反向排序
-c 检查排序是否正确
-C 静默模式,等同于-c,但是不显示错误信息
-k 按指定列排序
-o 保存排序结果到指定文件
-t 指定分隔符
-u 配合-c使用则严格检查排序;单独使用时遇到相同的行只显示一次
-z 输出内容不换行
--sort=WORD 指定排序方式
WORD: general-numeric -g, human-numeric -h, month -M, numeric -n, random -R, version -V

注意

系统语言环境可能会影响排序结果

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
$ more a
a
aa
A
AA
a
123
1
34
8e
bb
ca
$ sort a
1
123
34
8e
a
a
A
aa
AA
bb
ca
# -f大写字母优先于小写字母
$ sort -f a
bb
a
1
123
34
8e
A
a
AA
aa
ca
# -R随机排序
$ sort -R a
1
a
bb
aa
aa
bb
8e
AA
a
ca
123
A
34
$ more b
1
22
142
692
# -g按数值大小排序
$ sort -g b
1
22
142
692
# -k指定以第4列排序,-h以可读形式排序
$ df -h | sort -k4 -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 199M 0 199M 0% /run/user/0
/dev/sda1 1014M 168M 847M 17% /boot
devtmpfs 979M 0 979M 0% /dev
tmpfs 991M 9.5M 981M 1% /run
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.9G 16G 11% /
# -t指定分隔符,以第3列排序,以数值排序
$ sort -t: -k3 -n /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
$ cut -d: -f1,3 /etc/passwd | sort -t: -k2 -n
root:0
bin:1
daemon:2
adm:3
lp:4
sync:5
# 按IP地址大小排序
# -k[1-4]表示排序的次数,[1-4]n中的数字表示取第一个字段排序,n表示以数字从小到大排序,也可以写成nr,表示反序
$ dig +short aliyun.com|sort -t'.' -k1,1n -k2,2n -k3,3n -k4,4n
106.11.172.9
106.11.172.51
106.11.172.56
106.11.248.144
106.11.248.146
106.11.249.99
106.11.253.83
106.11.253.86
140.205.60.46
140.205.135.3