Linux 中的 join 命令及示例 - Linux 命令行教程
顾名思义,我们在 Linux 中使用 join 命令将文本文件中的数据与公共字段组合起来。该命令对于各种系统管理情况很有帮助。
例如,如果您要归档分布在多个文件中的个人信息,则可以使用 join 命令来合并它们。由于 join 命令附带的限制,它有时会变得非常棘手。但在本教程中,我们将帮助您解决这些问题并充分利用 join 命令。
在本教程中,您将通过示例学习如何在 Linux 中使用 join 命令。请按照下面的说明了解可与此命令一起使用的各种选项,以避免那些令人沮丧的命令执行错误。
在本教程中您将学习:
如何在 Linux 上使用 join 命令
常用选项
join 命令将获取两个或多个相关文本文档并将它们“连接”到一个或多个公共字段中,获取看似零散的数据并将其组合成更有意义的内容。请按照下面的一些示例来了解它是如何工作的。
Linux 中的 join 命令基本示例
单独运行 join 命令(无需任何其他选项)会将命令行中指定的文本文件与匹配的联接字段合并。 join 命令默认使用的字段是每个文本文件的第一行。在下面的示例中,我们将使用两个包含食物及其食物类型的文本文件。我们将其命名为
file01
和file02
。$ join file01 file02
如果您要与另一个文本文件合并的其中一个文本文件缺少要使用 join 命令(不带其他选项)合并的行,则输出将打印一条错误,指出文件未排序。因此join不会处理两个文件中的该行。如果这看起来有点令人困惑,那么从下面的示例屏幕截图中会更清楚。
$ join file01 file02
正如您在上面的屏幕截图中看到的,join 的输出合并了
file01
和file02
,但仅打印可以匹配的 3 行。这是因为,如继续输出的错误消息中所述,缺少行的文本文件未排序。现在您知道使用 join 命令合并包含该命令无法匹配的行的文件时会发生什么,我们可以开始学习如何使用
-a
选项以及文件编号以节省我们一些时间。$ join -a 1 file01 file02
将
-a
选项传递给 join 命令来合并file01
和file02
而不指定错误的文件编号上一个示例中告诉我们的消息未排序会给您一条错误消息。出现此错误的原因是,如果您不包含该文件,join 就无法知道您使用-a
选项引用的文件。$ join -a [file number] file01 file02
为join命令指定文件号,我们可以让它打印
file01
中不匹配的行,并且不会出现错误消息。如前所述,这节省了大量时间,因为我们不必自己去寻找不可配对的线路。$ join -a 1 file01 file02
注意
您始终可以使用 man 命令来阅读有关 join 命令及其官方文档的更多信息。单击上一个链接可查看如何打开 Linux 系统上任何命令的手册页。
高级用法
join 命令并不是非常复杂,但正如您在本文的示例部分中所观察到的,存在一些可能导致一些挂起的限制。但是我们可以利用可用于 join 命令的便捷命令行选项。查看下面该命令的一些更高级选项。
Linux 高级示例中的 join 命令
如前所述,join 命令将文本文件的行在匹配字段上连接在一起。默认情况下,该字段是每个文件的第一行。但是,在下面的示例中,我们将向您展示如何自定义将哪些行用作 join 命令的公共字段。
$ join join -2 1 -1 2 file01 file02
如果两个文件中的公共字段相同,我们可以使用
-j
选项代替-1
和-2
选项。$ join j1 file01 file02
结束语
在本教程中,我们全面了解了 Linux 上的 join 命令,这对于经常将数据保存在多个文本文件中的普通用户和系统管理员来说有利于掌握。
需要注意的是,在 Linux 中可以通过多种不同的方法来实现相同的结果。 join 命令也不例外。 Linux 中有多种使用命令对文本文件进行合并和排序的方法; join 命令只是其中之一。