sort命令使用说明

Posted liuzgg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sort命令使用说明相关的知识,希望对你有一定的参考价值。

1、命令概述

sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。

2、命令语法

sort 【选项】 【文件】

3、命令选项

-b:忽略每行前面开始出的空格字符
-c:检查文件是否已经按照顺序排序
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符
-f:排序时,将小写字母视为大写字母
-g:按通用数值排序,支持科学计数法
-i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符
-m:将几个排序号的文件进行合并
-M:将前面3个字母依照月份的缩写进行排序
-n:依照数值的大小排序
-o <输出文件>:将排序后的结果存入制定的文件
-r:以相反的顺序来排序,
-k:指定需要排序的栏位
-t <分隔字符>:指定排序时所用的栏位分隔字符
-u:去除重复的行

4、命令示例

4.1 sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出:

 1 [root@lzg ~]# cat a.txt 
 2 5
 3 11
 4 1
 5 156
 6 11
 7 23
 8 156
 9 256
10 [root@lzg ~]# sort a.txt 
11 1
12 11
13 11
14 156
15 156
16 23
17 256
18 5
19 [root@lzg ~]# cat b.txt 
20 aaa:30:1.6
21 bbb:10:2.5
22 ccc:50:3.3
23 ddd:20:4.2
24 bbb:10:2.5
25 eee:80:5.4
26 eee:60:5.1
27 [root@lzg ~]# sort b.txt 
28 aaa:30:1.6
29 bbb:10:2.5
30 bbb:10:2.5
31 ccc:50:3.3
32 ddd:20:4.2
33 eee:60:5.1
34 eee:80:5.4
35 [root@lzg ~]# 

4.2 忽略相同行使用-u选项或者uniq:

 1 [root@lzg ~]# sort a.txt 
 2 1
 3 11
 4 11
 5 156
 6 156
 7 23
 8 256
 9 5
10 [root@lzg ~]# sort -u a.txt 
11 1
12 11
13 156
14 23
15 256
16 5
17 [root@lzg ~]# sort b.txt 
18 aaa:30:1.6
19 bbb:10:2.5
20 bbb:10:2.5
21 ccc:50:3.3
22 ddd:20:4.2
23 eee:60:5.1
24 eee:80:5.4
25 [root@lzg ~]# sort -u b.txt 
26 aaa:30:1.6
27 bbb:10:2.5
28 ccc:50:3.3
29 ddd:20:4.2
30 eee:60:5.1
31 eee:80:5.4
32 [root@lzg ~]# 

或者使用uniq:

 1 [root@lzg ~]# sort a.txt 
 2 1
 3 11
 4 11
 5 156
 6 156
 7 23
 8 256
 9 5
10 [root@lzg ~]# sort a.txt | uniq
11 1
12 11
13 156
14 23
15 256
16 5
17 [root@lzg ~]# sort b.txt 
18 aaa:30:1.6
19 bbb:10:2.5
20 bbb:10:2.5
21 ccc:50:3.3
22 ddd:20:4.2
23 eee:60:5.1
24 eee:80:5.4
25 [root@lzg ~]# sort b.txt | uniq
26 aaa:30:1.6
27 bbb:10:2.5
28 ccc:50:3.3
29 ddd:20:4.2
30 eee:60:5.1
31 eee:80:5.4
32 [root@lzg ~]# 

4.3 -n 依照数值的大小顺序排列:

 1 [root@lzg ~]# cat a.txt 
 2 5
 3 11
 4 1
 5 156
 6 11
 7 23
 8 156
 9 256
10 [root@lzg ~]# sort -n a.txt 
11 1
12 5
13 11
14 11
15 23
16 156
17 156
18 256
19 [root@lzg ~]# cat b.txt 
20 aaa:30:1.6
21 bbb:10:2.5
22 ccc:50:3.3
23 ddd:20:4.2
24 bbb:10:2.5
25 eee:80:5.4
26 eee:60:5.1
27 [root@lzg ~]# sort -n b.txt 
28 aaa:30:1.6
29 bbb:10:2.5
30 bbb:10:2.5
31 ccc:50:3.3
32 ddd:20:4.2
33 eee:60:5.1
34 eee:80:5.4
35 [root@lzg ~]# 

4.4 sort的-n、-r、-k、-t选项的使用:

 1 [root@lzg ~]# cat b.txt 
 2 aaa:30:1.6
 3 bbb:10:2.5
 4 ccc:50:3.3
 5 ddd:20:4.2
 6 bbb:10:2.5
 7 eee:80:5.4
 8 eee:60:5.1
 9 [root@lzg ~]# sort -n -k2 -t: b.txt 
10 bbb:10:2.5
11 bbb:10:2.5
12 ddd:20:4.2
13 aaa:30:1.6
14 ccc:50:3.3
15 eee:60:5.1
16 eee:80:5.4
17 [root@lzg ~]# sort -nr -k3 -t: b.txt 
18 eee:80:5.4
19 eee:60:5.1
20 ddd:20:4.2
21 ccc:50:3.3
22 bbb:10:2.5
23 bbb:10:2.5
24 aaa:30:1.6
25 [root@lzg ~]# 
#-n是按照数字大小排序,-r是以相反顺序,-k是指定需要排序的栏位,-t指定栏位分隔符为冒号

4.5 

 

以上是关于sort命令使用说明的主要内容,如果未能解决你的问题,请参考以下文章

代码片段 - Golang 实现集合操作

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段——cli的终端命令大全

VSCode自定义代码片段4——cli的终端命令大全

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程