sort
命令跟它的单词释义一样,在 Linux 中用来处理排序。它一般的用途是对文件内容按行进行排序处理,并把排序结果输出到标准输出。更常见的用途是配合其他命令,对输出结果进行排序处理。
sort 命令格式
sort [选项]... [文件]...
如果没有指定文件,或者文件为 -
符号,则从标准输入读取。
sort 命令示例
对 test.txt 文件内容进行排序并输出排序结果:
sort test.txt
对相同的文件做反向排序:
sort -r test.txt
对 ls
命令输出的文件名进行排序:
ls -1 /etc | sort
对 ls
命令输出结果的用户名进行排序:
ls -l /etc | sort -k 3
更复杂一点的例子,结合 netstat
,awk
,cut
和 uniq
命令,获取当前访问本机的 IP 地址,并按数量从多到少排列:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | uniq -c | sort -rn
sort 命令选项
缩写 | 完整名称 | 说明 |
---|---|---|
-b |
--ignore-leading-blanks |
忽略前导的空白区域。 |
-d |
--dictionary-order |
只考虑空白区域和字母字符。 |
-f |
--ignore-case |
忽略字母大小写。 |
-g |
--general-numeric-sort |
按照通常的数字值顺序作比较,暗含 -b 。 |
-i |
--ignore-nonprinting |
在关键字中只考虑 [\040-\0176] 字符。 |
-M |
--month-sort |
按 未知的 < JAN < ... < DEC 的顺序比较,暗含 -b 。 |
-h |
--human-numeric-sort |
使用易读性数字。如:2K,1G。 |
-n |
--numeric-sort |
按照字符串的数值顺序比较,暗含 -b 。 |
-R |
--random-sort |
打乱排序。 |
--random-source= FILE |
从 FILE 中获取随机字符。 | |
-r |
--reverse |
倒序排列排序结果。 |
--sort= WORD |
按照 WORD 指定的格式排序。一般数字 -g ,高可读性 -h ,月份 -M ,数字 -n , 随机 -R ,版本 -V 。 |
|
-V |
--version-sort |
在文本内进行自然版本排序。 |
--batch-size= NMERGE |
一次最多合并 NMERGE 个输入;如果输入更多则使用临时文件。 | |
-c |
--check , --check=diagnose-first |
检查输入是否已排序,若已有序则不进行操作。 |
-C |
--check=quiet , --check=silent |
类似 -c ,但不报告第一个无序行。 |
--compress-program= 程序名称 |
使用指定程序压缩临时文件;使用该程序的 -d 参数解压缩文件。 |
|
--debug |
为用于排序的行添加注释,并将有可能有问题的用法输出到标准错误输出。 | |
--files0-from= 文件 |
从指定文件读取以 NUL 终止的名称,如果该文件被指定为 - 则从标准输入读文件名。 |
|
-k |
--key= KEYDEF |
使用关键字排序; KEYDEF 需给出位置和类型。 |
-m |
--merge |
合并已经排序好的文件,不排序。 |
-o |
--output= 文件 |
将结果写入到文件而非标准输出。 |
-s |
--stable |
禁用 last-resort 比较以稳定比较算法。 |
-S |
--buffer-size= 大小 |
指定主内存缓存大小。 |
-t |
--field-separator= 分隔符 |
使用指定的分隔符代替非空格到空格的转换。 |
-T |
--temporary-directory= 目录 |
使用指定目录而非 $TMPDIR 或 /tmp 作为临时目录,可用多个选项指定多个目录。 |
--parallel= N |
将同时运行的排序数改变为 N。 | |
-u |
--unique |
配合 -c ,严格校验排序;不配合 -c ,则只输出一次排序结果。 |
-z |
--zero-terminated |
以 NUL 空字符而非换行符作为行尾分隔符。 |
--help |
显示此帮助信息并退出。 | |
--version |
显示版本信息并退出。 |