比较两个排序好的文件的方法——comm

author author     2022-09-06     304

关键词:

导读

Linux 中的 comm 命令可以让用户按行比较两个已经排序好的文件。在本教程中,我们将使用一些浅显易懂的例子来讨论这个命令行工具。在开始之前,请注意,本教程中提到的所有例子都已经在 Ubuntu 16.04LTS 版本中测试过。.

下面的例子将会告诉你 comm 命令是如何工作的。。

技术分享

如何使用 comm比较两个排序好的文件

要使用comm 命令比较两个排序好的文件,只需要把它们的名字作为comm 命令的参数。下面是通常的语法:

comm [name-of-first-file] [name-of-second-file]

比如,假设file1 file2 是这种情况下的两个文件。前者包含下面几行内容:

001
056
127
258

而后者包含下面几行内容:

002
056
167
369

此时,comm命令的输出如下图所示:

comm file1 file2

技术分享

你可以看到,输出包含 3 列。第一列是仅包含在file1中的内容,第二列是仅包含在 file2 中的内容,最后,第三列是两个文件中均包含的内容。

如何不输出 comm 命令输出中的某些列

如果你想,你可以不输出 comm命令输出中的某些列。对于该特性,你有三个命令行选项可用:-1-2 和 -3 。正如你所猜想的,这些数字表示你不想输出的列。

比如,下面这个命令将会不输出上面例子中的第三列:

comm -3 file1 file2

技术分享

因此,你可以看到,第三列并没有输出。

注意,你可以通过一个单一命令同时不输出多列内容。比如:

comm -12 file1 file2

上面这个命令将会不输出第一、二列。

如何使用 comm 命令比较两个未排序好的文件

正如我们所知道的,comm 只可用于排序好的文件。如果发现其中一个文件未排序好,那么便会在输出中产生一条信息来告诉用户。比如,我们交换 file1 的第一行和第二行,然后与 file2 进行比较。下面是该命令的输出:

技术分享

你可以看到,这个命令产生一个输出告诉我们:file1 还没有排序好。此时,如果你不想让这个工具检查输入是否已经排序好,那么你可以使用 --nocheck-order 选项:

comm --nocheck-order file1 file2

技术分享

你可以看到,前面出现的提示信息已经消失了。

注意,如果你想明确告诉 comm 命令来检查输入文件是否排序好,那么你可以使用 --check-order选项。

如何用自定义字符串分隔comm 命令的输出列

默认情况下,comm 命令的输出列之间是以空格分隔的。然而,如何你想使用一个自定义字符串作为分隔符,那么你可以使用 --output-delimiter选项。使用该选项时需要指定你想用来作为分隔符的字符串。

comm --output-delimiter=+ file1 file2

比如,我们使用加号来作为分隔符:

技术分享

如何使 comm 的输出行以 NUL字符终止

默认情况下,comm 命令的输出行以新行终止。然而,如果你想,那么你可以改为以 NUL 字符终止,只需要使用-z 选项即可:

comm -z file1 file2

结论

comm 命令并没有特别多的特性性,我们在这儿已经讨论了它的绝大多数命令行选项。只需要理解和练习在这篇教程中讨论的内容,那么你便可以在日常工作中知道如何使用这个工具了。如果你有任何问题或者疑问,请前往该命令的 man 手册,或者在下面评论。

原文地址: http://www.linuxprobe.com/comm-sort.html


本文出自 “小华的博客” 博客,请务必保留此出处http://coderhsf.blog.51cto.com/12629645/1942375

linux文件比较命令的comm命令

如果想对两个有序的文件进行比较,可以使用comm命令。语法:comm[-123]file1file2说明:该命令是对两个已经排好序的文件进行比较。其中file1和file2是已排序的文件。comm读取这两个文件,然后生成三列输出:仅在file1中出现的行;... 查看详情

commdiff文件对比

...序处理并且是unix格式而非dos格式的文本文件功能说明:比较两个已排过序的文件。(使用sort排序)语  法:comm [-123][--help][--version][第1个文件][第2个文件]补充说明:这项指令会一列列地比较两个已排序文件的差异,并将... 查看详情

两个文件比较之comm命令

comm命令可用于两个文件之间的比较。它有很多不错的选项可用来调整输出,以便我们执行交集、求差(difference)以及差集操作。?交集:打印出两个文件所共有的行。?求差:打印出指定文件所包含的且互不相同的那些行。?差集... 查看详情

两个文件diff:交集差集并集

...列的输出,即只输出第三列】comm命令可以求两个文件的比较结果。默认输出三列,分别表示A-B,B-A和A交B。comm命令要求输入文件的内容必须是排序且唯一的https://www.xuebuyuan.com/1273561.htmlgrep交集:grep-F 查看详情

文本处理和权限用户(代码片段)

文本处理:diff:比较两个文件的不同sort:将文件进行排序comm:两个文件进行比较,有三排结果:1.显示第二列没有的内容2.显示第二列没有的内容3.显示两个文件相同的内容-n:根据数的大小排序-o:把第一个文件里的内容打印到第二... 查看详情

linux比较两个文件的不同(6/21)(代码片段)

cmp命令:比较任意两个类型的文件,且吧结果输出到标准输出,默认文件相同不输出,不同的文件输出差异必要参数-c显示不同的信息-l列出所有的不同信息-s错误信息不提示 选择参数-i<字符数>指定字符数目-v显示版本信... 查看详情

mac比较两个文件(代码片段)

比较两个文件,输出两个文件都有的行,可以使用comm命令,如下例:------------------->$cat1s1.txtline0line1line1line2line3line4------------------->$cat1s2.txtline1line3line3line6------------------->$comm1s1.txt1s2.txtline0li 查看详情

算法5--排序

...序方法的实现1冒泡排序算法 排序算法的理论和实现比较简单; 对于冒泡排序算法的改进,一种比较好的方法是,每次中间排序之后,都进行排序状态检测,如果已经排好序,就退出排序过程,否则基于冒泡排序; ... 查看详情

两个文件内容差异对比,

比较两个单行文件的方法就我知道的而言有4种用diff用grep用comm用uniq[[email protected] ~]# echo "`seq 5`" >file1;cat file112345[[email protected] ~]# echo "`seq 2&n 查看详情

如何根据列比较 unix 中的两个文件

】如何根据列比较unix中的两个文件【英文标题】:HowdoIcomparetwofilesinunixbasedontheircolumns【发布时间】:2020-10-2610:27:16【问题描述】:我对unix命令相当陌生,但我有两个.csv文件,我想将第一列与diff或comm进行比较。每一行都是不同... 查看详情

比较不同长度的两个文件之间的共同值(Linux)

】比较不同长度的两个文件之间的共同值(Linux)【英文标题】:ComparingCommonValuesbetweentwofilesofdifferentlength(Linux)【发布时间】:2021-11-1406:21:56【问题描述】:我比较了两个不同长度的文件,我首先发现了文件1中存在但文件2中不... 查看详情

java里的collections类中的静态方法sort()是怎么用比较器比较两个对象?

...。collections.sort方法就是按照pricecomparator类的compare方法来比较list的各个元素,进行排序。collections.sort的源码我没有看过,不知道他具体使用什么方法排序,不过排序算法就那么几类:选择排序、插入排序、交换排序。估计是快... 查看详情

几种排序方法的比较

...的次数是取决于列表的长度。 2.冒泡排序。每两个数比较,互换。每轮选出最大的数放到最顶端。效率:因为不会一次性换完,效率最小会是列表长度的平方。(慢。)改进了两个版 查看详情

八种基本排序方法

...排序(O(nlogn)、不稳定)  快速排序简称快排,是一种比较快的排序,适合基本无序的数据,为什么这么说呢?下面我说下快排的思路:  设置两个指针:i和 查看详情

compareto方法详解

String类有CompareTo方法,该方法按照字典顺序比较两个字符串的前后大小顺序。有两种情况。一个是两个字符串有不同的字符,这种情况下,CompareTo方法会从出现不同字符的最小索引位k,去比较两个字符串k索引位的字符的字典顺序,排... 查看详情

三大数组排序方法(选择冒泡插入)

...、选择排序选择排序原理将数组中每个元素与第一个元素比较,如果这个元素小于第一个元素,则交换这两个元素循环第1条规则,找出最小元素,放于第1个位置经过n-1轮比较完成排序简单而言,每轮都找到最小的放到前面。二... 查看详情

comm命令——对已经有序的文件进行比较——第一列只在文件1中出现的文件,第二列只在文件2中出现的文件,第三列在文件1和文件2中同事出现的文件

请注意前提条件:           comm对文件进行处理时,要求文件已经有序,如果没有顺序,请使用sort进行排序后进行处理。语  法:            &nb 查看详情

在 c# 中比较两个 pdf 文件的最佳方法是啥?

】在c#中比较两个pdf文件的最佳方法是啥?【英文标题】:Whatisthebestwayofcomparingtwopdffileinc#?在c#中比较两个pdf文件的最佳方法是什么?【发布时间】:2011-05-2114:36:37【问题描述】:我想在C#中检查两个PDF文件的文本内容。【问题讨... 查看详情