> 文本处理与搜索 > comm

comm: 比较两个已排序文件的共同和唯一行

comm 命令用于比较两个已排序文件的内容,并以三列形式输出:仅存在于一个文件中的行,以及两个文件共有的行。它对于合并或去重操作非常有用。

概述

comm 是 'common' 的缩写,是一个专门用于比较两个已排序文件行内容的命令。它并行比较文件内容,并以三列形式显示结果。第一列显示仅存在于第一个文件中的行,第二列显示仅存在于第二个文件中的行,第三列显示两个文件共有的行。此命令在比较已排序的文本数据(如数据库列表或用户 ID 列表)时尤其强大。

主要特点

comm 命令的主要特点如下:

  • 用于比较两个已排序的文件。(如果文件未排序,则需要先使用 `sort` 命令。)
  • 以清晰的三列形式输出比较结果。
  • 便于一目了然地识别文本数据的共同点和差异。
  • 具有选择性隐藏输出列的功能,可用于多种用途。

comm 与 diff

comm 和 diff 都是文件比较工具,但它们的工作方式和目的有所不同。

  • comm: 专用于已排序文件,以三列形式输出共同行和唯一行。无法检测到更改(行内容的修改)。
  • diff: 可以比较未排序的文件,并详细输出所有逐行更改(添加、删除、修改)。

主要选项

comm 命令的选项主要用于隐藏特定列。

1) 控制输出列

2) 帮助

生成的命令:

请尝试组合命令。

描述:

`comm` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

通过 comm 命令的各种使用示例来学习其功能。

比较两个文件的共同和唯一行

comm file1.txt file2.txt

以三列形式比较两个已排序文件的内容。

只输出两个文件共有的行

comm -12 file1.txt file2.txt

使用 `-1` 和 `-2` 选项隐藏仅存在于第一个和第二个文件中的行,只输出共同的行。

只输出两个文件的唯一行

comm -3 file1.txt file2.txt

使用 `-3` 选项隐藏共同的行,只输出每个文件独有的行。

比较未排序的文件

comm <(sort file1.txt) <(sort file2.txt)

通过管道 (`|`) 将 `sort` 命令与 `comm` 结合使用,也可以比较未排序的文件。

安装

comm 作为 `coreutils` 包的一部分,默认包含在大多数 Linux 发行版中。无需单独安装。

提示与注意事项

总结了使用 comm 命令时需要注意的事项。

提示

  • 在使用 comm 之前,**必须对文件内容进行排序。** 如果文件未排序,将无法获得正确的比较结果。
  • 要检查文件是否已排序,可以运行 `comm file1.txt file2.txt` 并查看输出是否与预期不同,或者通过 `sort` 命令对文件进行排序后再进行比较。
  • `<(...)` 语法是进程替换,它将 `sort` 命令的结果作为临时文件传递给 `comm`。这种方法使得比较未排序的文件变得简单方便。

相关命令

功能上相似或经常一起使用的命令。


相同类别命令