直接用 sort 命令即可按 ascii 升序逐行排序;支持覆盖原文件(-o)、忽略大小写(-f)、去重(-u)、忽略前导空格(-b)及指定列排序,中文排序需设置 lc_collate=c。

直接用 sort 命令就行,它默认就是按字母顺序(ASCII 升序)逐行排序。
基础用法:默认字母升序
不加任何选项时,sort 会从每行开头字符开始,按 ASCII 值从小到大比较:
-
sort file.txt—— 输出排序结果到终端,原文件不变 -
sort file.txt > sorted.txt—— 把结果保存到新文件 -
sort -o file.txt file.txt—— 直接覆盖原文件(注意:-o 后必须跟输出文件名,且不能与输入同名除非用此写法)
忽略大小写排序
如果文件里混有大小写字母(比如 Apple、apple、Banana),默认排序会把大写字母排在小写前面(A-Z 在 a-z 之前)。想统一处理,加 -f:
-
sort -f names.txt—— Apple 和 apple 被视为相同首字母,按字典序自然排列
去掉重复行再排序
要同时去重和排序,用 -u。注意:-u 只保留**第一次出现**的重复行,且必须配合排序才有效(因为去重逻辑依赖顺序):
-
sort -u data.txt—— 先排序,再删掉后续重复行 - 单独用
sort -u就够了,不用额外加-n或-f,除非你还需要数值或大小写处理
常见干扰项提醒
实际使用中容易出错的点:
- 行首空格会影响排序位置——加
-b可忽略前导空白 - 含中文或特殊符号时,排序结果取决于系统 locale 设置;如需稳定行为,可临时设为 C 区域:
LC_COLLATE=C sort file.txt - 管道输入也适用:
ps aux | sort -k 11按第 11 列(命令名)字母排序











