comm 命令在 Linux 中用于比较两个已排序的文件。它逐行比较文件,并显示两个文件之间的差异。comm 命令对于查找两个数据集之间的共同点和差异非常有用,尤其是在处理排序后的文本文件时。

基本语法

comm [选项] 文件1 文件2
  • 文件1文件2:这两个文件应该是预先排序过的,因为 comm 只能正确比较已排序的行。

输出格式

comm 命令的输出分为三列:

  • 第一列:仅在文件1中出现的行。
  • 第二列:仅在文件2中出现的行。
  • 第三列:两个文件中都出现的行。

常用选项

  • -1:不显示仅存在于文件1中的行。
  • -2:不显示仅存在于文件2中的行。
  • -3:不显示两个文件中都存在的行。
  • --output-delimiter=STR:使用指定的字符串作为输出的列分隔符,默认为制表符。

示例

  1. 比较两个已排序的文件
comm file1.txt file2.txt

这将显示 file1.txtfile2.txt 的差异。

  1. 仅显示两个文件中都存在的行
comm -12 file1.txt file2.txt

使用 -12 选项可以隐藏仅存在于一个文件中的行,只显示两个文件共有的行。

  1. 使用自定义分隔符
comm --output-delimiter='|' file1.txt file2.txt

这将使用竖线 | 作为输出的列分隔符。

注意事项

  • 为了正确比较,两个文件必须预先排序。如果文件未排序,comm 命令的结果可能不准确。
  • comm 命令在处理大型文件时效率很高,因为它只逐行读取和比较。
  • 如果你想要比较未排序的文件,你可能需要先使用 sort 命令对文件进行排序,然后再使用 comm 命令。

comm 命令是文本文件比较的一个有用工具,它提供了一种快速查看两个数据集差异的方法。