当前位置:首页>Linux>Linux命令每日一清单029:sort--文本排序命令速查表

Linux命令每日一清单029:sort--文本排序命令速查表

  • 2026-09-09 19:42:01
Linux命令每日一清单029:sort--文本排序命令速查表

sort是Linux/Unix系统中用于对文本文件行进行排序的标准工具。它能够按照字母顺序、数字顺序、月份顺序等多种规则对文件内容或标准输入进行排序,支持按字段排序、去除重复行、合并已排序文件等高级功能。

sort是命令行数据处理的核心组件之一,常与uniq、cut、awk等工具配合使用,用于日志分析、数据统计、结果整理等场景。sort支持外部排序算法,即使处理超大文件(大于内存)也能高效完成。掌握sort是进行文本数据处理和数据分析的基础技能。

1. 基本语法

命令说明
sort file.txt
按字母顺序排序(升序)
sort -r file.txt
反向排序(降序)
sort -n file.txt
按数字顺序排序
sort -nr file.txt
按数字降序排序(最大优先)
sort file1.txt file2.txt
合并并排序多个文件
sort -m file1.txt file2.txt
合并已排序的文件(不重新排序)

2. 按字段排序

命令说明
sort -k2 file.txt
按第二个字段排序
sort -k2,2 file.txt
仅使用字段2作为排序键(忽略后续字段)
sort -t: -k3,3n /etc/passwd
以:分隔,按第3个字段(UID)数值排序
sort -t, -k1,1 data.csv
按CSV文件第一列排序
sort -k3,3 -k1,1 file.txt
多级排序:先按字段3,再按字段1
sort -k2nr file.txt
按字段2数值降序排序

字段分隔符说明:

  • 默认字段分隔符:空白字符(空格或制表符)
  • 使用-t指定分隔符,如-t:、-t,、-t'|'

3. 数值与大小排序

命令说明
sort -n numbers.txt
数值排序
sort -g values.txt
通用数值排序(支持浮点数和科学计数法)
sort -h sizes.txt
排序人类可读大小(K、M、G)
du -sh /var/* | sort -h
按文件大小排序du输出
sort -V versions.txt
版本号排序(1.9在1.10之前)
ls -1 | sort -V
按版本号排序文件列表

数值排序对比:

# 字母排序(默认):1, 10, 2, 20, 3
# 数值排序(-n):1, 2, 3, 10, 20
# 版本排序(-V):1.2, 1.10, 2.0

4. 去重与检查

命令说明
sort -u file.txt
排序并去除重复行
sort file.txt | uniq
等效的两步去重操作
sort file.txt | uniq -c
统计重复次数
sort -c file.txt
检查文件是否已排序
sort -C file.txt
安静检查排序状态(仅返回退出码)
sort -u -o output.txt input.txt
去重后输出到文件

退出码说明:

  • 0:文件已排序
  • 1:文件未排序

5. 原地输出与输出控制

命令说明
sort file.txt > sorted.txt
输出到新文件
sort -o file.txt file.txt
原地排序(安全,不会清空文件)
sort -o out.txt in.txt
指定输出文件名
sort -T /tmp bigfile.txt
使用临时目录处理大文件
LC_ALL=C sort file.txt
使用字节顺序排序(可预测的locale)
sort -s file.txt
稳定排序(保留原始顺序)

重要提示:

# 危险!会清空文件
sort file.txt > file.txt

# 正确做法
sort -o file.txt file.txt

6. 实用管道组合

命令说明
grep -Eo '[[:alnum:]_]+' file.txt | sort | uniq -c | sort -rn
统计单词出现频率(降序)
cut -d',' -f2 data.csv | sort
对CSV某一列排序
sort access.log | uniq -c | sort -rn | head -10
找出日志中最常见的10行
ps -eo user= | sort | uniq -c | sort -rn
按用户统计进程数量
find . -type f | sort
排序查找结果
ls -la | sort -k5 -n
按文件大小排序ls输出
history | awk '{print $2}' | sort | uniq -c | sort -rn | head
统计最常用命令

7. 字段排序高级技巧

命令说明
sort -k2.2,2.3 file.txt
按第2个字段的第2-3个字符排序
sort -t: -k3,3 -k4,4n /etc/passwd
多字段:先按UID文本,再按GID数值
sort -t, -k2,2nr data.csv
按第2列数值降序排序
sort -k1,1 -k2,2n file.txt
先按字段1字典序,再按字段2数值
sort -k1r -k2n file.txt
字段1降序,字段2升序
sort --debug -k2 file.txt
显示排序键分析(调试用)

8. 常用选项速查

选项完整名称说明
-r
--reverse
反向排序
-n
--numeric-sort
按数值排序
-g
--general-numeric-sort
通用数值排序(支持浮点数)
-h
--human-numeric-sort
人类可读大小排序(K、M、G)
-V
--version-sort
版本号排序
-u
--unique
去除重复行
-c
--check
检查是否已排序
-C
--check=quiet
安静检查(不输出)
-k
--key
指定排序键
-t
--field-separator
指定字段分隔符
-o
--output
指定输出文件
-s
--stable
稳定排序
-f
--ignore-case
忽略大小写
-b
--ignore-leading-blanks
忽略前导空白
-T
--temporary-directory
指定临时目录
-m
--merge
合并已排序的文件

9. Locale对排序的影响

设置说明
LC_ALL=C
按ASCII码顺序排序(可预测,速度快)
LC_ALL=en_US.UTF-8
按英文排序(可能大小写不敏感)
LC_ALL=zh_CN.UTF-8
按中文拼音排序
export LC_ALL=C
设置环境变量获得稳定排序

示例:

# 确保可预测的排序行为
LC_ALL=C sort file.txt

10. 实用组合模式

命令说明
sort -t' ' -k2n /proc/meminfo
按数值排序内存信息
sort -k1,1 -t: /etc/passwd | cut -d: -f1,3
按用户名排序并提取用户名和UID
df -h | sort -k5 -h
按使用百分比排序磁盘使用情况
ls -l | sort -k5 -n | tail -5
找出最大的5个文件
sort -R file.txt
随机排序(shuffle)
sort -t$'\t' -k2n data.tsv
按Tab分隔的TSV文件第2列排序
comm -12 <(sort file1) <(sort file2)
找出两个文件共同的行

11. 故障排查

问题解决方法
数字被当作文本排序
添加-n选项;浮点数使用-g
大小值顺序不正确
使用-h处理人类可读大小
大小写顺序不符合预期
使用-f忽略大小写;或设置LC_ALL=C
执行sort file > file后文件变空
sort先打开输出文件导致清空,使用sort -o file file
不同系统排序结果不同
设置LC_ALL=C统一locale行为
大文件排序内存不足
使用-T指定临时目录;sort会自动使用外部排序
字段分隔符不生效
检查实际分隔符(Tab需用$'\t'表示);使用-t指定
多级排序不按预期工作
使用--debug查看排序键解析;检查-k选项边界

温馨提示: sort是数据处理的核心工具,建议掌握以下技巧:1)处理CSV/TSV文件时使用-t指定分隔符;2)日志分析时结合uniq统计频率,再用sort -rn找出最高频条目;3)使用sort -o原地排序避免重定向陷阱;4)跨环境使用LC_ALL=C确保排序结果一致。在脚本中使用sort时,可以通过-c检查输入是否已排序,避免不必要的排序操作。对于超大文件,sort的自动外部排序机制非常可靠,只需确保-T指定的临时目录有足够空间。

本文PDF格式下载:

  关注公众号(haopython),请回复: LLTSORT

最新文章

随机文章