zzxworld

Linux sort 命令使用指南

Linux sort 命令使用指南

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

更复杂一点的例子,结合 netstatawkcutuniq 命令,获取当前访问本机的 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 显示版本信息并退出。