说明
sort命令将输入的内容按照指定的规则进行排序,然后再输出
格式
sort [option] [file]
常用参数说明
- -b:忽略每行开头存在的空白字符
- -n:依照数值的大小进行排序
- -r:倒序排列
- -u:去除重行
- -t:指定分隔符
- -k:按指定区间排序
示例
1、不指定任何参数,默认进行排序。排序规则以行来进行升序排列
[root@localhost ~]# cat test4.txt
1.1.32
1.0.1
1.2.1
2.3.1
3.4.2
1.0.1
1.7.9
2.5.4
1.0.1
[root@localhost ~]# sort test4.txt
1.0.1
1.0.1
1.0.1
1.1.32
1.2.1
1.7.9
2.3.1
2.5.4
3.4.2
2、-n参数使用,按数字的从小到大的顺序进行排序
[root@localhost ~]# sort -n test4.txt
1.0.1
1.0.1
1.0.1
1.1.32
1.2.1
1.7.9
2.3.1
2.5.4
3.4.2
3、-r参数使用,倒序排列
[root@localhost ~]# sort -r test4.txt
3.4.2
2.5.4
2.3.1
1.7.9
1.2.1
1.1.32
1.0.1
1.0.1
1.0.1
4、-u参数使用,去掉重复的行
[root@localhost ~]# sort -u test4.txt
1.0.1
1.1.32
1.2.1
1.7.9
2.3.1
2.5.4
3.4.2
5、-t、-k参数使用,指定排序的列
[root@localhost ~]# cat test6.txt
1.1.32 a
1.0.1 g
1.2.1 h
2.3.1 y
3.4.2 z
1.0.1 w
1.7.9 l
2.5.4 f
1.0.1 b
[root@localhost ~]# sort test6.txt #默认为第一列进行排序
1.0.1 b
1.0.1 g
1.0.1 w
1.1.32 a
1.2.1 h
1.7.9 l
2.3.1 y
2.5.4 f
3.4.2 z
[root@localhost ~]# sort -t " " -k2 test6.txt #以空格作为分隔符,指定第二列进行排序
1.1.32 a
1.0.1 b
2.5.4 f
1.0.1 g
1.2.1 h
1.7.9 l
1.0.1 w
2.3.1 y
3.4.2 z
6、-t、-k参数的高级使用
使用第一个日期先月份排序,在根据天排序
[root@localhost ~]# cat test7.txt
2015-01-12~2016.07.23
2015-05-22~2017.01.01
2015-04-09~2015.12.22
2015-05-20~2015.10.11
2016-01-01~2018.01.01
2015-05-04~2017.12.23
[root@localhost ~]# sort -n -t - -k2,2 -k3.1,3.2 test7.txt
2016-01-01~2018.01.01
2015-01-12~2016.07.23
2015-04-09~2015.12.22
2015-05-04~2017.12.23
2015-05-20~2015.10.11
2015-05-22~2017.01.01
#作用:
-n:按照数字排序
-t:按照"-"作为分隔符
-k2,2:按照第2个字段开始到第二个字段结束进行排序
-k3.1,3.2:按照第3个字段的第一字符开始到第二个字符结束进行排序
.:点号连接的是字符
,:逗号连接的是字段