Linux命令:排序
accttodo 8/1/2022 运维操作系统Linux
目录
参考:
# Linux命令:排序
# 一、命令简介
sort命令用于将文本文件内容加以排序。
sort可针对文本文件的内容,以行为单位来排序。
sort命令将每一行作为一个单位进行比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按一定的顺序进行输出。
sort命令经常可以与ls、cat等命令结合使用,将查询到的结果按照我们要求进行排序。
# 二、语法说明
# 2.1 使用语法
sort [选项] [文件]
1
# 2.2 选项说明
选项 | 说明 |
---|---|
-b, --ignore-leading-blanks | 忽略每行前面开始出的空格字符。 |
-c, --check, --check=diagnose-first | 检查文件是否已经按照顺序排序。 |
-C, --check=quiet, --check=silent | 与-c参数类似,但不要报告第一行错误 |
-d, --dictionary-order | 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。 |
-g, --general-numeric-sort | 按一般数值比较 |
-f, --ignore-case | 排序时,将小写字母视为大写字母。 |
-i , --ignore-nonprinting | 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。 |
-m , --merge | 将几个排序好的文件进行合并。 |
-M , --month-sort | 将前面3个字母依照月份的缩写进行排序。 |
-h, --human-readable | 以可读性较高的方式来显示信息; |
-n, --numeric-sort | 依照数值的大小排序。 |
-u , --unique | 意味着是唯一的(unique),输出的结果是去完重了的。 |
-o<输出文件> | 将排序后的结果存入指定的文件。 |
-r | 以相反的顺序来排序。 |
-R, --random-sort | |
–random-source=FILE | 按密钥的随机散列排序 |
-t<分隔字符> | 指定排序时所用的栏位分隔字符。 |
-k, --key=KEYDEF | 通过键排序;KEYDEF给出位置和类型 |
-o, --output=FILE | 将结果写入文件而不是标准输出 |
-s, --stable | 通过禁用最后的比较来稳定排序 |
-S, --buffer-size=SIZE | 使用主内存缓冲区大小 |
-t, --field-separator=SEP | 使用SEP代替非空到空转换 |
-T, --temporary-directory=DIR | 将DIR用于临时变量,而不是$TMPDIR或/tmp; |
多个选项指定多个目录 | |
-u, --unique | 与-c一起,检查是否严格排序; |
没有-c,则只输出相等运行的第一个 | |
-z, --zero-terminated | 以0字节结束行,而不是换行 |
+<起始栏位>-<结束栏位> | 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。 |
–help | 显示帮助。 |
–version | 显示版本信息。 |
# 三、使用示例
# 1、默认安装字母排序
[root@~test ~]# cat word.txt
one
two
two
three
four
[root@~test ~]# sort word.txt
four
one
three
two
two
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 2、安装数字大小排序
[root@~test ~]# cat num.txt
10
8
20
100
4
[root@~test ~]# sort -n num.txt
4
8
10
20
100
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 3、去重后排序
[root@~test ~]# sort -u word.txt
four
one
three
two
1
2
3
4
5
2
3
4
5
# 4、按照降序排序
[root@~test ~]# sort -ur word.txt
two
three
one
four
1
2
3
4
5
2
3
4
5
# 5、文件夹大小排序
# 6、指定分隔符并按照指定列排序
# 7、将排序结果输出到文件
[root@test ~]# sort -t ‘:’ -k 3 -nr /etc/passwd > /tmp/out.log
[root@test ~]# cat /tmp/out.log
1
2
2