sort命令默认按整行字典序升序排列,但实际应用中需加选项:-n按数值排序防“10排2前”,-k指定列、-t设分隔符、-r逆序、-u去重、-f忽略大小写等。

Linux 中的 sort 命令默认按整行字典序升序排列,但真实场景中几乎都需要加选项才能得到合理结果——比如数字当数字排、按某列排、去重或逆序。关键不是“会不会用”,而是“选对选项组合”。
按数字大小排序(避免字典序陷阱)
不加 -n 时,10 会排在 2 前面(因为 "1" "2"),这在处理行号、内存值、端口等时很危险。
- 用
sort -n 文件名按数值升序 - 加
-r变成降序:sort -nr 文件名 - 配合管道处理命令输出,如:
ps aux | sort -nk3(按 CPU% 第三列数值排序)
按指定列排序(处理结构化文本)
日志、CSV、/etc/passwd 这类以分隔符划分字段的文本,必须用 -t 和 -k 配合。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
-t ':'指定冒号为分隔符(如/etc/passwd) -
-k 3,3表示只取第 3 列(起止都是 3),避免跨列误匹配 - 组合使用:
sort -t: -k3,3n /etc/passwd(按 UID 数值升序) - 多条件:先按第 2 列升序,再按第 3 列降序:
sort -k2,2 -k3,3nr data.csv
特殊内容专用排序(省去手动转换)
这些选项专为常见格式设计,不用自己写脚本预处理。
-
-h:处理人类可读大小,如du -sh *输出中的1.2G、512K——du -sh * | sort -h -
-V:正确解析版本号,让v1.10排在v1.9后面 ——ls *.tar.gz | sort -V -
-M:按英文月份缩写排序,JAN
实用控制与输出(日常高频操作)
几个能立刻提升效率的小技巧:
-
-u:排序同时去重,等价于sort file | uniq,但更快更简洁 -
-o 文件名:直接写入文件,支持覆盖原文件(sort -o data.txt data.txt是安全的) -
-r单独用:对字母、日期、任意文本做倒序,如ls -t | sort -r(最新文件在前) -
-c:不排序,只检查文件是否已有序,返回状态码供脚本判断










