Linux comm命令教程:对比和分析文件内容(附案例详解和注意事项)

发布时间:2024年01月15日

Linux comm命令介绍

comm,又称为_compare common lines_命令,是一个简易的Linux文件比较工具,主要用于标识出两个已排序文件中的共同部分。该命令逐行比较两个文件,并以三列形式显示结果。

Linux comm命令适用的Linux版本

通常,comm命令在所有的Linux发行版上都是可用的,这包括但不限于Ubuntu、Debian、CentOS,以及Fedora等。在您的系统上不可用时,一般是由于coreutils包尚未安装造成的。在大多数系统上,可以用下面的命令来安装:

在CentOS 7上:

[linux@bashcommandnotfound.cn ~]$ sudo yum install coreutils

在CentOS 8及其它最新的Linux发行版上:

[linux@bashcommandnotfound.cn ~]$ sudo dnf install coreutils

不同的Linux命令及其参数应以选项卡形式展示,这将有助于读者更好地理解和比较。

Linux comm命令的基本语法

comm [OPTION]... FILE1 FILE2

在这里,FILE1和FILE2是你要比较的两个文件。

Linux comm命令的常用选项或参数说明

选项描述
-1不输出文件1独有的行
-2不输出文件2独有的行
-3只输出两文件共有的行

Linux comm命令实例详解

实例1:仅输出两个文件共享的行

[linux@bashcommandnotfound.cn ~]$ comm -12 file1 file2

这里的数字选项可以组合使用,例如-12会同时启用-1-2

实例2:检查输入文件是否已排序

[linux@bashcommandnotfound.cn ~]$ comm --check-order file1 file2

实例3:显示两个文件的不同部分

[linux@bashcommandnotfound.cn ~]$ comm -3 file1 file2

实例4:显示文件1独有的行

[linux@bashcommandnotfound.cn ~]$ comm -23 file1 file2

实例5:显示文件2独有的行

[linux@bashcommandnotfound.cn ~]$ comm -13 file1 file2

实例6:输出文件1有但文件2没有的行和文件2有但文件1没有的行

[linux@bashcommandnotfound.cn ~]$ comm -3 file1 file2

上述命令用于返回那些只在一个文件中存在的行,而另一个文件不存在,即文件1和文件2独有的行。

实例7:忽略文件是否已经排序

[linux@bashcommandnotfound.cn ~]$ comm --nocheck-order file1 file2

这个例子中,不论文件是否排序,comm命令会直接执行并给出结果,可能会包含错误。

实例8: 在脚本中使用comm命令

[linux@bashcommandnotfound.cn ~]$ awk 'BEGIN {
        print "Comm Command in Scripts";
        print "File1 Contents : ";
        system("cat file1");
        print "File2 Contents : ";
        system("cat file2");
        print "Comm Output : "
        system("comm file1 file2");
}'

在这个例子中,我们将comm命令结合了awk命令一起使用在一个脚本中,比较了两个文件的内容。

实例9: 对比两个目录

[linux@bashcommandnotfound.cn ~]$ comm -12 <(ls dir1) <(ls dir2)

这个例子中,我们用了进程替换的方式,将ls命令的输出作为comm命令的输入,显示了dir1和dir2都有的文件。

实例10: 对比两个csv文件

[linux@bashcommandnotfound.cn ~]$ comm -13 <(sort file1.csv) <(sort file2.csv)

对比两个CSV文件中独有的行,-1-3选项一同使用表示只输出file2中独有的行,这在数据处理中也是十分常用的。

实例11: 对比两个文本文件

[linux@bashcommandnotfound.cn ~]$ comm -12 <(sort text1.txt) <(sort text2.txt) > common.txt

这个例子中,我们将两个文本文件排序后的共有的行输出到了一个新的文本文件common.txt中。

实例12: 不仅对比内容了,还检查了排序

[linux@bashcommandnotfound.cn ~]$ comm --check-order sorted_file1 sorted_file2

在这个例子中,comm会检查输入文件是否已经排序。如果文件已经排序,comm命令将正常执行。如果输入文件没有排序,comm命令将返回一个错误。

Linux comm命令的注意事项

  • 当输入的文件未经排序时,comm命令的结果可能不准确。
  • 如果在使用comm命令时遇到"bash: comm: command not found"提示,可以根据上面给出的命令进行安装。

Linux comm相关命令

文章来源:https://blog.csdn.net/u012964600/article/details/135520727
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。