sort:文本排序

xiaohai 2021-06-09 10:55:28 1875人围观 标签: Linux 
简介sort命令将输入的内容按照指定的规则进行排序,然后再输出
说明

  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个字段的第一字符开始到第二个字符结束进行排序
.:点号连接的是字符
,:逗号连接的是字段