概述
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`。这种方法使得比较未排序的文件变得简单方便。