Linux comm命令教程为初学者(5个例子)

Linux中的comm命令允许用户逐行比较两个排序的文件。 在本教程中,我们将使用易于理解的示例讨论此命令行工具。 但是在我们这样做之前,请注意,本教程中提到的所有示例都已在Ubuntu 16.04LTS上进行了测试。

Linux comm命令

以下示例应该让您对“comm”工具的工作方式有一个很好的了解。

1.如何使用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

所以你可以看到输出由三列组成。 第一个包含'file1'唯一的行,第二个包含'file2'唯一的行,最后,列3包含两个文件共同的行。

2.如何在comm命令输出中抑制各个列

如果需要,可以在comm命令输出中抑制各列。 为此,您有三个命令行选项: -1-2-3 。 正如您所猜测的,这些数字代表您要抑制的列。

例如,我们的命令就是压制第三列:

comm -3 file1 file2

所以你可以看到第三列被压制了。

请注意,您可以使用单个命令抑制多个列。 例如:

comm -12 file1 file2

将抑制第一列和第二列。

3.如何使comm比较未排序的文件

我们知道,comm命令只适用于排序的文件。 如果发现文件未被排序,则在输出中生成一条消息,告知用户有关此信息。 例如,我们将第一行和第二行交换在“file1”中,然后将其与“file2”进行比较。 输出结果如下:

所以你可以看到命令产生一个输出,说'file1'没有被排序。 现在,如果您不希望该工具检查输入是否排序,可以使用--nocheck-order选项。

comm --nocheck-order file1 file2

所以你可以看到早先显示的消息被抑制了。

请注意,如果要明确告知comm命令对输入文件进行排序检查,可以使用--check-order选项。

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

默认情况下,comm命令输出中的列用空格分隔。 但是,如果需要,您可以更改它,并将您选择的字符串作为分隔符。 这可以使用--output-delimiter选项来完成。 此选项要求您指定要用作分隔符的字符串。

comm --output-delimiter=STR file1 file2

例如,我们使用加号(+)作为分隔符。

如何使comm输出行NUL终止

默认情况下,comm命令输出行被换行。 但是,如果你愿意,你可以使它们NUL被终止。 这可以使用-z命令行选项来完成。

comm -z file1 file2

结论

comm命令不提供很多功能 - 我们几乎涵盖了所有的命令行选项。 所以只需了解和实践我们在本教程中讨论过的内容,您将可以在日常任务中使用该工具。 如果有任何疑问或疑问,请前往指挥官的手册页 ,或在下面发表评论。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏