# sort - 对文本文件中所有行进行排序

以行为单位,对文本文件进行排,并输出排序结果。默认情况下,以每一行为一个单位,从首字符开始按照ASCII码向后逐个比较。

主要用途:

  • 将所有输入文件的内容排序后并输出。
  • 当没有文件或文件为-时,读取标准输入。

# 适用范围

RedHat
RHEL
Ubuntu
CentOS
Debian
Deepin
SUSE
openSUSE
Fedora
Linux Mint
Alpine Linux
Arch Linux

# 语法

sort  [选项]  file
sort  [OPTION]... --files0-from=F

# 选项

# 排序
-b, --ignore-leading-blanks    # 忽略开头的空白。
-d, --dictionary-order         # 仅考虑空白、字母、数字。
-f, --ignore-case              # 将小写字母作为大写字母考虑。
-g, --general-numeric-sort     # 根据数字排序。
-i, --ignore-nonprinting       # 排除不可打印字符。
-M, --month-sort               # 按照非月份、一月、十二月的顺序排序。
-h, --human-numeric-sort       # 根据存储容量排序(注意使用大写字母,例如:2K 1G)。
-n, --numeric-sort             # 根据数字排序。
-R, --random-sort              # 随机排序,但分组相同的行。
    --random-source=FILE       # 从FILE中获取随机长度的字节。
-r, --reverse                  # 将结果倒序排列。
    --sort=WORD                # 根据WORD排序,其中: general-numeric 等价于 -g,
                               # human-numeric 等价于 -h,month 等价于 -M,numeric
                               # 等价于 -n,random 等价于 -R,version 等价于 -V。
-V, --version-sort             # 文本中(版本)数字的自然排序。

# 其他 

    --batch-size=NMERGE                 # 一次合并最多NMERGE个输入;
                                        # 超过部分使用临时文件。
-c, --check, --check=diagnose-first     # 检查输入是否已排序,该操作不会执行排序。
-C, --check=quiet, --check=silent       # 类似于 -c 选项,但不输出第一个未排序的行。
    --compress-program=PROG             # 使用PROG压缩临时文件;使用PROG -d解压缩。
    --debug                             # 注释用于排序的行,发送可疑用法的警报到stderr。
    --files0-from=F                     # 从文件F中读取以NUL结尾的所有文件名称;
                                        # 如果F是 - ,那么从标准输入中读取名字。
-k, --key=KEYDEF                        # 通过一个key排序;KEYDEF给出位置和类型。
-m, --merge                             # 合并已排序文件,之后不再排序。
-o, --output=FILE                       # 将结果写入FILE而不是标准输出。
-s, --stable                            # 通过禁用最后的比较来稳定排序。
-S, --buffer-size=SIZE                  # 使用SIZE作为内存缓存大小。
-t, --field-separator=SEP               # 使用SEP作为列的分隔符。
-T, --temporary-directory=DIR           # 使用DIR作为临时目录,而不是 $TMPDIR 
                                        # 或 /tmp;多次使用该选项指定多个临时目录。
    --parallel=N                        # 将并发运行的排序数更改为N。
-u, --unique                            # 同时使用-c,严格检查排序;不同时使用-c,
                                        # 输出排序后去重的结果。
-z, --zero-terminated                   # 设置行终止符为NUL(空),而不是换行符。

    --help                              # 显示帮助信息并退出。
    --version                           # 显示版本信息并退出。

KEYDEF的格式为:F[.C][OPTS][,F[.C][OPTS]] ,表示开始到结束的位置。

F表示列的编号

C表示

OPTS为[bdfgiMhnRrV]中的一到多个字符,用于覆盖当前排序选项。

使用--debug选项可诊断出错误的用法。

# 返回值

返回0表示成功,返回非0值表示失败。

# 举例

[sogrey@bogon 文档]$ ls
backup  demos
[sogrey@bogon 文档]$ cd demos
[sogrey@bogon demos]$ ls
test2.txt  test3.txt  test4.txt  test.txt
[sogrey@bogon demos]$ cat test.txt
石家庄今日新增16例确诊病例
中国留美博士遇害 美驻华使馆慰问
特朗普夫人发文谴责国会暴乱
理塘文旅公司回应丁真抽烟
北京一确诊者隐瞒行程不配合流调
山西晋中新增2例无症状感染者
[sogrey@bogon demos]$ sort test.txt
北京一确诊者隐瞒行程不配合流调
理塘文旅公司回应丁真抽烟
山西晋中新增2例无症状感染者
石家庄今日新增16例确诊病例
特朗普夫人发文谴责国会暴乱
中国留美博士遇害 美驻华使馆慰问
[sogrey@bogon demos]$