如何在 Linux 中将两个文件的行按公共字段连接起来?

linuxoperating systemopen source

要在 Linux 系统中将两个文件的行按公共字段连接起来,可以使用 join 命令。join 命令用于将两个文件的行按公共字段连接起来。如果我们有两个文件,并且想要连接其中的行,则无需合并这两个文件。我们可以使用 join 命令连接行而无需合并文件。默认情况下,连接字段是第一个字段,以空格分隔。

语法

join 命令的一般语法如下:


join [选项]... FILE1 FILE2

注意 - 如果未指定 FILE1 或 FILE2 或两者都未指定,则 join 命令从标准输入读取。

fmt 命令可用选项的简要说明。

Sr.No. 选项 &描述
1 -a, FILENUM
同时打印文件 FILENUM 中不可配对的行,其中 FILENUM 为 1 或 2,分别对应于 FILE1 或 FILE2
2 -e EMPTY
将缺失的输入字段替换为 EMPTY
3 -i, --ignore-case
比较字段时忽略大小写差异
4 -j FIELD
等效于"-1 FIELD"。 -2 字段
5 -o FORMAT
构造输出行时请遵循 FORMAT 格式
6 -t CHAR
使用 CHAR 作为输入和输出字段分隔符
7 -v FILENUM
类似于 -a FILENUM,但会抑制合并后的输出行
8 -1 FIELD
基于文件 1 的此字段进行连接
9 -2 FIELD
基于文件 2 的此字段进行连接
10 --header
将每个文件的第一行视为字段标题,并打印它们而不尝试配对
11 -z, --zero -terminated
行分隔符为 NULL,而非换行符
12 --help
显示帮助信息后退出。
13 --version
显示版本信息后退出。

要将两个文件的行合并并输出到标准输出,我们使用不带任何其他选项的 join 命令,如下所示。

首先,我们将使用 Linux 系统中的 cat 命令创建两个已排序的文件。

$ cat > text1.txt
1 SID
2 SAYANI
3 GAURAV
4 VIKASH
$ cat >text2.txt
1 23
2 19
3 22
4 21

接下来,我们将使用 join 命令在 Linux 系统中连接多行,如下所示。

$ join text1.txt text2.txt
1 SID 23
2 SAYANI 19
3 GAURAV 224 VIKASH 21

注意 - 要合并两个文件,两个文件必须有一些共同字段。

我们可以创建一个新文件,将共同字段合并到其中,如下所示。

$ join text1.txt text2.txt > jointext.txt

要查看 join 命令的更多信息,请在 Linux 操作系统中使用 join 命令的 --help 选项,如下所示。

$ join --help

要查看 join 命令的版本信息,请在 Linux 操作系统中使用 join 命令的 --version 选项,如下所示。

$ join --version

相关文章


有用资源