首页/系统/Linux 运维命令速查/comm 比较两个有序文件的异同
本包目录(613 条)
文件与目录76 条
文本处理77 条
网络命令82 条进程与作业69 条磁盘与文件系统51 条用户与权限44 条日志与排查40 条systemd 与服务42 条包管理34 条性能与监控48 条定时任务与计划50 条

comm 比较两个有序文件的异同

输出三列:只在文件1、只在文件2、两边都有;-12 取交集、-23 取仅 1 独有,集合运算非常好用;前提是输入必须已排序。

Linux 运维命令速查系统更新于 2026-10-12
用途有序文件的集合比较(差集/交集)
语法comm [选项] 文件1 文件2
要求两文件都按同一规则排好序

常用示例

常用示例
comm -12 <(sort a.txt) <(sort b.txt)   # 交集
comm -23 <(sort a.txt) <(sort b.txt)   # 只在 a 中
LC_ALL=C comm -3 a.sorted b.sorted | sed 's/^	//'
排序规则要一致:一边 LC_ALL=C 一边中文 locale,结果毫无意义。

易错点

  • 输入未排序时 GNU comm 会警告「not in sorted order」但仍输出——结果不可信,先统一 sort
  • 列之间用制表符分隔,加工输出时用 -1/-2/-3 精确抑制列,别靠 cut 硬切

数据来源与参考

  • man 1 comm(GNU coreutils 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌