📜  Linux 中的 join 命令(1)

📅  最后修改于: 2023-12-03 14:43:56.715000             🧑  作者: Mango

Linux 中的 join 命令

简介

join 命令是一个 Linux 中的工具命令,用于将两个文件的内容按照共同的键进行合并。它可以接受多个文件输入,但是只能合并两个文件的内容。join 命令在 Linux 中常用于对数据进行关联操作。

基本用法

join 命令的基本用法如下,其中 file1file2 是要合并的两个文件,-1-2 分别指定了两个文件中用于合并的键的列号,即第几列。

$ join -1 <col1> -2 <col2> <file1> <file2>

其中 <col1><col2> 分别指定了两个文件中用于合并的键的列号,从 1 开始。如果两个文件中的键的值相等,则它们的内容会被合并到同一行中,否则会被忽略。

示例

假设有两个文件 file1.txtfile2.txt,分别内容如下:

=== file1.txt ===
id,name,age
1,Alice,20
2,Bob,25
3,Charlie,30

=== file2.txt ===
id,position
1,Engineer
2,Manager
4,CEO

我们希望通过两个文件中的 id 列进行合并。示例代码如下:

$ join -1 1 -2 1 file1.txt file2.txt

执行上述命令后,会输出如下结果:

id name age position
1 Alice 20 Engineer
2 Bob 25 Manager
高级用法

join 命令还支持很多高级用法,这里只介绍一些常见的用法:

对等联接

通过 -a 选项可以实现对等联接(full outer join),即输出两个文件的所有内容,如果某个键在另一个文件中不存在,则输出空值。

$ join -a 1 -a 2 -1 1 -2 1 file1.txt file2.txt

其中 -a 1 表示输出文件 1 的所有内容,-a 2 表示输出文件 2 的所有内容。

指定输出列

通过 -o 选项可以指定输出的列,以逗号分隔,例如:

$ join -o 1.1,1.2,2.2 -1 1 -2 1 file1.txt file2.txt

其中 -o 1.1,1.2,2.2 表示输出文件 1 的第 1、2 列和文件 2 的第 2 列。

改变分隔符

通过 -t 选项可以改变输入和输出的分隔符,默认为空格。

$ join -t ',' -1 1 -2 1 file1.txt file2.txt

其中 -t ',' 表示分隔符为逗号。

总结

join 命令是一个在 Linux 中进行数据关联操作的实用工具,它可以将两个文件的内容按照共同的键进行合并,在数据处理、数据分析中十分常用。