Linux提供了 comm
命令,以便逐行比较两个已排序的文件。使用comm命令最重要的一点是这两个文件应该已经被排序了。comm命令最早是在1973年为Unix操作系统创建的,并在20世纪80年代末流行起来。最早出现在Unix版本4中。comm命令提供了与diff命令非常相似的功能。作为一个基本的工具,它不会定期更新,并且版本在很长一段时间内保持稳定。
comm命令语法
comm命令处理两个文件,但从命令行读取的输入除外。因此comm命令的语法有两个文件和选项,如下所示。
comm OPTIONS FILE1 FILE2
- 选项 用于更改比较操作,如显示相同和唯一的行等。
- 文件1 是与FILE2比较的第一个文件。
- 文件2 是与FILE1比较的第二个文件。
comm命令参数
comm是一个简单的Linux命令,它提供了如下几个选项。
参数 | 说明 |
---|---|
-1 | 不显示第一个文件唯一行 |
-2 | 不显示第二个文件唯一行 |
-3 | 显示公用行(两个文件都存在) |
–检查订单 | 检查文件是否正确排序 |
–无检查命令 | 不要检查文件是否正确排序 |
–输出delimeter | 为输出设置分隔符 |
–总计 | 显示摘要信息 |
-z轴 | 以NUL终止,而不是换行 |
–帮助 | 打印帮助信息 |
–版本 | 打印版本信息 |
比较两个排序的文件
让我们从一个简单的例子开始,我们将检查两个正确排序的文件。下面的示例将比较两个文件并打印三列作为输出。我们不会提供任何参数。我们有以下文件名为 file1.txt
和 file2.txt
.
aaalinuxtect.compoftut.compythontect.comwindowstect.comwisetut.com
file2.txt的内容如下所示。
linuxtect.compoftut.compythontect.comwindowstect.comwisetut.comwww
我们将使用以下命令比较file1.txt和file2.txt。
$ comm file1.txt file2.txt
![图片[1]-Linux命令教程-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/10/linuxtect_image-5.png)
从输出中可以看到,“aaa”行只存在于file1.txt中,“www”行只存在于file2.txt中。所有其他行同时存在于file1.txt和file2.txt中。根据输出提供的打印到第一列的第一文件唯一行,打印到第二列的第二文件唯一行和公共行被打印到第三列。而且,每一列都用一个 标签 .
相关文章: 如何在ubuntulinux上创建新的用户帐户?
不显示第一个文件唯一行
我们可以使用 -1
用于隐藏第一个文件唯一行的选项或参数。这将只打印两列,其中第一列是第二个文件的唯一行,第二列是两个文件的公共行或相同行。
$ comm -1 file1.txt file2.txt
![图片[2]-Linux命令教程-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/10/linuxtect_image-6.png)
不显示第二个文件唯一行
我们可以使用 -2
选项或参数以隐藏第二个文件唯一行。这将只打印两列,其中第一列是第二个文件唯一行,第二列是公共行或两个文件中存在的相同行。
$ comm -1 file1.txt file2.txt
仅显示唯一行
如果只需要显示两个文件的唯一文件,可以使用 -3
打印唯一行但不打印相同行的选项。
$ comm -3 file1.txt file2.txt
![图片[3]-Linux命令教程-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/10/linuxtect_image-7.png)
显示相同和唯一的行数
这个 --total
选项可用于显示关于文件1的唯一行数、文件2的唯一行数以及两个文件中的相同行数。
$ comm --total file1.txt file2.txt
![图片[4]-Linux命令教程-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/10/linuxtect_image-8.png)
差异与通信
diff和comm命令提供了非常相似的功能,这通常会导致比较。通常,diff命令提供了更多功能。comm命令最适合在脚本文件中使用,以便进行更简单的操作和比较。