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相关命令
- diff命令:比较文件的不同
- cmp命令:比较两个文件是否有差异
- sort命令:排序或比较文件
- cat命令:连接并打印文件
- more和less:分页显示文件内容
- head和tail命令:显示文件的开头和结尾部分
- cut命令:移除文件中的某一部分
- grep命令:在文件中搜索字符串
- awk命令:用于文本和数据处理
- sed命令:一种流编辑器