1. sort命令基础认知:文本排序的瑞士军刀
在Linux系统日常运维和数据处理中,sort命令就像一位沉默的排序大师。我第一次接触这个命令是在处理服务器日志时,面对上千行杂乱无章的访问记录,sort让我在30秒内就完成了按时间戳排序。这个经历让我深刻意识到:掌握sort命令,就等于拥有了文本数据的整理超能力。
sort的核心功能是对文本行进行排序输出,但它真正的价值在于:
- 支持按字典序、数值、月份、随机等多种排序规则
- 能处理GB级别的大文件(实测处理过3GB日志文件)
- 可指定复杂排序键(如第2列第3个字符开始比较)
- 支持去重、合并已排序文件等进阶操作
注意:虽然sort默认按行处理,但通过-k参数可以实现列级精细控制,这是很多初学者容易忽略的要点
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心参数深度解析
2.1 基础排序模式实战
bash复制# 字母序排序(默认)
$ cat fruits.txt | sort
apple
banana
cherry
# 数值排序(-n参数)
$ cat numbers.txt | sort -n
1
5
23
100
# 逆序输出(-r参数)
$ seq 1 5 | sort -r
5
4
3
2
1
数值排序有个经典坑点:如果不加-n参数,100会排在2前面,因为默认按字符ASCII值比较。我在处理服务器内存使用数据时就踩过这个坑,导致监控报表完全错乱。
2.2 字段控制的黑科技
bash复制# 按第二列排序(字段分隔符默认是空白字符)
$ cat data.csv | sort -k2
Alice 25
Bob 30
Carol 22
# 指定冒号作为分隔符按第三列数值排序
$ cat /etc/passwd | sort -t: -k3 -n
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
字段处理时容易遇到的三个问题:
- 分隔符要用-t明确指定(特别是处理CSV时)
- 列号从1开始计数(不是程序员习惯的0)
- -k参数支持复杂格式如
-k2.3(第2列第3字符
