跳到主要内容

sort / uniq / comm 文本处理速查表

sort、uniq 和 comm 是 Linux/Unix 文本处理的三大基础命令。sort 对文本行排序,uniq 去重并统计频次,comm 进行集合(交集、差集)运算。本速查表覆盖从基础到高级的所有用法。

更新: 2026-07-16·36 条命令

基本排序 (Basic Sort)

sort 命令对文本行进行排序,默认按字典序。

### 基础操作

``yaml # 按字典序排序 sort file.txt

# 按数值排序 sort -n numbers.txt

# 逆序排序 sort -r file.txt

# 数值逆序排序 sort -rn numbers.txt

# 忽略大小写排序 sort -f file.txt

# 忽略前导空白 sort -b file.txt `

### 检查排序状态

`yaml # 检查是否已排序(无输出表示已排序) sort -c file.txt

# 静默检查(退出码指示状态,0=已排序) sort -C file.txt `

高级排序 (Advanced Sort)

### 按字段排序

`yaml # 按第2列排序(默认 tab/空格分隔) sort -k2 data.txt

# 按第3列数值排序 sort -k3n data.txt

# 按第2列排序,第3列数值排序 sort -k2,2 -k3n data.txt

# 指定列分隔符(冒号) sort -t: -k3n /etc/passwd

# 按数值字段排序并保持标题行 (head -1 data.txt && tail -n+2 data.txt | sort -k2n) > sorted.txt `

### 人类可读与版本号排序

`yaml # 人类可读数值排序(K/M/G 单位) sort -h sizes.txt

# 版本号排序 sort -V versions.txt

# 混合排序 sort -h -k2 size_report.txt `

### 合并与输出控制

`yaml # 合并已排序文件 sort -m sorted1.txt sorted2.txt

# 去重排序 sort -u file.txt

# 输出到文件而非 stdout sort file.txt -o sorted.txt

# 指定缓冲区大小 sort -S 1G large.txt

# 指定临时目录 sort -T /tmp large.txt

# 随机排序 sort --random-sort file.txt `

去重 (uniq)

uniq 命令去除/统计连续重复行(通常配合 sort 使用)。

### 基本去重

`yaml # 去除连续重复行(通常先排序) sort file.txt | uniq

# 去除重复(相当于 sort -u) sort -u file.txt

# 统计每行出现次数 sort file.txt | uniq -c

# 只显示重复行 sort file.txt | uniq -d

# 只显示唯一行(不重复的) sort file.txt | uniq -u `

### 高级去重

`yaml # 忽略大小写 sort file.txt | uniq -i

# 比较前 N 个字符 sort file.txt | uniq -w 5

# 跳过前 N 个字符 sort data.txt | uniq -s 3

# 组合:统计且忽略大小写 sort -f file.txt | uniq -ic

# 统计并按频次降序排列 sort file.txt | uniq -c | sort -rn `

集合运算 (Set Operations with comm)

comm 命令比较两个已排序文件的公共行。

### 交集与差集

`yaml # 显示所有三列(file1独有 | file2独有 | 共有) comm sorted1.txt sorted2.txt

# 交集:两文件都有的行 comm -12 file1.txt file2.txt

# file1 独有(差集) comm -23 file1.txt file2.txt

# file2 独有(差集) comm -13 file1.txt file2.txt `

### 集合运算组合

`yaml # 对称差集(A∪B - A∩B) comm -3 file1.txt file2.txt | tr -d '\t'

# 并集(所有行) cat file1.txt file2.txt | sort -u

# 检查 A 是否是 B 的子集 # 如果 A-B 为空则 A⊆B [ -z "$(comm -23 A.txt B.txt)" ] && echo "A是B的子集" `

管道组合 (Pipeline Patterns)

sort、uniq、comm 常与其他命令配合形成强大的文本处理管道。

### 日志分析

`yaml # 统计 Nginx 访问 IP 及次数(降序) awk '{print $1}' access.log | sort | uniq -c | sort -rn

# 统计 HTTP 状态码分布 awk '{print $9}' access.log | sort | uniq -c | sort -rn

# 找出最活跃的 TOP 10 IP awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10 `

### 文件去重与排序

`yaml # 合并多个文件并去重 cat file1.txt file2.txt file3.txt | sort -u > combined.txt

# 找出两文件相同和不同的行 sort file1.txt > a.sorted sort file2.txt > b.sorted comm a.sorted b.sorted `

### 实用辅助命令

`yaml # 随机打乱行 shuf file.txt

# 拓扑排序(主要用于依赖关系) tsort depend.txt

# 统计单词频率 tr ' ' '\n' < file.txt | sort | uniq -c | sort -rn

# 按管道统计行数 cat file.txt | sort | uniq | wc -l ``

基本排序(8)

命令难度
sort file.txt
按字典序升序排序
基础
sort -n numbers.txt
按数值大小排序
基础
sort -r file.txt
逆序(降序)排序
基础
sort -rn numbers.txt
数值逆序排序
基础
sort -f file.txt
忽略大小写排序
基础
sort -b file.txt
忽略前导空白字符
基础
sort -c file.txt
检查文件是否已排序(输出错误行)
中级
sort -C file.txt
静默检查排序状态(退出码 0=已排序)
中级

高级排序(12)

命令难度
sort -k2 data.txt
按第 2 列排序
中级
sort -k3n data.txt
按第 3 列数值排序
中级
sort -t: -k3n /etc/passwd
指定冒号为分隔符,按第 3 列数值排序
中级
sort -k2,2 -k3n data.txt
先按第 2 列排序,同值再按第 3 列数值排序
中级
sort -h sizes.txt
人类可读数值排序(K/M/G)
中级
sort -V versions.txt
版本号排序
中级
sort -u file.txt
排序并去重
基础
sort -m sorted1.txt sorted2.txt
合并已排序文件(不执行排序)
高级
sort -S 1G large.txt
指定排序缓冲区大小
高级
sort -T /tmp large.txt
指定临时文件目录
高级
sort -o sorted.txt file.txt
排序并输出到指定文件
基础
sort --random-sort file.txt
随机排序(打乱行顺序)
中级

去重(6)

命令难度
sort file.txt | uniq
排序后去重
基础
sort file.txt | uniq -c
统计每行出现次数
基础
sort file.txt | uniq -d
只显示重复行
基础
sort file.txt | uniq -u
只显示唯一行(不重复的)
基础
sort -f file.txt | uniq -ic
忽略大小写统计频次
中级
sort file.txt | uniq -w 5
只比较每行前 5 个字符去重
中级

集合运算(4)

命令难度
comm sorted1.txt sorted2.txt
三列显示:file1独有|file2独有|共有
基础
comm -12 file1.txt file2.txt
交集(两文件都有的行)
基础
comm -23 file1.txt file2.txt
差集(file1 独有行)
基础
comm -13 file1.txt file2.txt
差集(file2 独有行)
基础

管道组合(6)

命令难度
sort file.txt | uniq -c | sort -rn
统计频率并按频次降序排列
中级
awk '{print $1}' access.log | sort | uniq -c | sort -rn
统计日志中 IP 访问次数并降序排列
中级
cat file1.txt file2.txt | sort -u
合并多个文件并去重(并集)
基础
shuf file.txt
随机打乱文件行
基础
tsort depend.txt
拓扑排序(依赖关系排序)
高级
tr ' ' '\n' < file.txt | sort | uniq -c | sort -rn
统计单词频率(空格分隔转行)
中级

常见问题

本速查表数据整理自各工具官方文档。最后更新: 2026-07-16。