前言
sort命令用于将文本文件内容加以排序,并将排序结果标准输出。
sort可针对文本文件的内容,以行为单位来排序。
sort命令既可以从特定的文件,也可以从stdin中获取输入。
sort命令的功能是对文件内容进行排序。
sort默认按照从小到大进行排序。

1、功能说明
将文件进行排序,并将排序结果标准输出
2、语法格式
sort [参数][文件]
3、选项解释
-b 忽略每行前面开始出的空格字符
-n 依照数值的大小排序
-r 倒序排序
-u 去除重复行
-t <分隔字符> 指定排序时所用的栏位分隔字符
-k 指定区间排序
-o <输出文件> 将排序后的结果存入指定的文件
-c 检查文件是否已经按照顺序排序
-d 除字母、数字及空格字符外,忽略其他字符
-f 将小写字母视为大写字母
-m 将几个排序号的文件进行合并
4、参考实例
准备数据sort.txt:
1 北京 1.202.80.66
3 重庆 42.123.128.0
7 成都 61.188.0.0
4 上海 211.80.0.0
2 云南 42.242.0.0
5 浙江 58.100.0.0
3 重庆 42.123.128.0
1 北京 1.202.80.66
- 默认以行为单位进行排序
[root@xn ~]# sort sort.txt
1 北京 1.202.80.66
1 北京 1.202.80.66
2 云南 42.242.0.0
3 重庆 42.123.128.0
3 重庆 42.123.128.0
4 上海 211.80.0.0
5 浙江 58.100.0.0
7 成都 61.188.0.0
- 去除重复的行
[root@xn ~]# sort -u sort.txt
1 北京 1.202.80.66
2 云南 42.242.0.0
3 重庆 42.123.128.0
4 上海 211.80.0.0
5 浙江 58.100.0.0
7 成都 61.188.0.0
- 对指定的文件内容按照数字大小进行排序
[root@xn ~]# sort -n sort.txt
1 北京 1.202.80.66
1 北京 1.202.80.66
2 云南 42.242.0.0
3 重庆 42.123.128.0
3 重庆 42.123.128.0
4 上海 211.80.0.0
5 浙江 58.100.0.0
7 成都 61.188.0.0
- 对指定的文件内容倒序排序
[root@xn ~]# sort -r sort.txt
7 成都 61.188.0.0
5 浙江 58.100.0.0
4 上海 211.80.0.0
3 重庆 42.123.128.0
3 重庆 42.123.128.0
2 云南 42.242.0.0
1 北京 1.202.80.66
1 北京 1.202.80.66
- 指定文件按照自定义分割符后再指定列排序
[root@xn ~]# sort -t ' ' -k3 sort.txt
以空格为分割符,然后以第三列的值排序。
1 北京 1.202.80.66
1 北京 1.202.80.66
4 上海 211.80.0.0
3 重庆 42.123.128.0
3 重庆 42.123.128.0
2 云南 42.242.0.0
5 浙江 58.100.0.0
7 成都 61.188.0.0
[root@xn ~]# sort -t '.' -k2 sort.txt
以.为分割符,然后以第二列的值排序。
5 浙江 58.100.0.0
3 重庆 42.123.128.0
3 重庆 42.123.128.0
7 成都 61.188.0.0
1 北京 1.202.80.66
1 北京 1.202.80.66
2 云南 42.242.0.0
4 上海 211.80.0.0
- -t -k 的进阶使用
cat sort2.txt
adm:x:3:4:adm --> adm:x:3[第三列]:4[第四列]:adm
root:x:0:0:root
root:x:0:5:root
root:x:0:11:root
root:x:0:10:root
root:x:0:4:root
sync:x:5:0:sync
mail:x:8:12:mail
lp:x:4:7:lp
daemon:x:2:2:daemon
halt:x:7:0:halt
bin:x:1:1:bin
shutdown:x:6:0:shutdow
- 以冒号:为分割符,先按照第三列排序,再以第四列排序
[root@xn ~]# sort -n -t : -k 3,3 -k 4.1,4.2 sort2.txt
root:x:0:0:root
root:x:0:4:root
root:x:0:5:root
root:x:0:10:root
root:x:0:11:root
bin:x:1:1:bin
daemon:x:2:2:daemon
adm:x:3:4:adm
lp:x:4:7:lp
sync:x:5:0:sync
shutdown:x:6:0:shutdown
halt:x:7:0:halt
mail:x:8:12:mail
- 以冒号:为分割符,先按照第三列倒序排序,再以第四列倒序排序
[root@xn ~]# sort -nr -t : -k 3,3 -k 4.1,4.2 sort2.txt
mail:x:8:12:mail
halt:x:7:0:halt
shutdown:x:6:0:shutdown
sync:x:5:0:sync
lp:x:4:7:lp
adm:x:3:4:adm
daemon:x:2:2:daemon
bin:x:1:1:bin
root:x:0:11:root
root:x:0:10:root
root:x:0:5:root
root:x:0:4:root
root:x:0:0:root
- 将排序结果输出到指定文件,使用参数-o
- 将排序的结果输出到文件sort3.txt文件中,如果输出文件不存在会自动创建
[root@xn ~]#sort -nr -t : -k 3,3 -k 4.1,4.2 sort2.txt -o /data/test/sort3.txt
[root@xn ~]# cat sort3.txt
mail:x:8:12:mail
halt:x:7:0:halt
shutdown:x:6:0:shutdown
sync:x:5:0:sync
lp:x:4:7:lp
adm:x:3:4:adm
daemon:x:2:2:daemon
bin:x:1:1:bin
root:x:0:11:root
root:x:0:10:root
root:x:0:5:root
root:x:0:4:root
root:x:0:0:root
5、-t -k进阶分析
-n:是按照数字大小排序,
-t:指定栏位分隔符为冒号,
-r:是以相反顺序,
-k:是指定需要排序的栏位,
-k 3,3 按第三个字段开始到第三个字段结束排序
-k 4.1, 4.2 按第四个字段第一个字符开始到第四个字段第二个字符结束排序
. 点号连接的是字符
, 逗号连接的是字段
转载请注明:XAMPP中文组官网 » Linux命令之sort