🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。
🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。
🏆本文已收录于专栏:Linux命令大全。
🏆本专栏我们会通过具体的系统的命令讲解
加上鲜活的实操案例
对各个命令进行深入讲解。欢迎提前锁定关注。
🎉欢迎 👍点赞✍评论⭐收藏
文章目录
- 一、简介
- 二、语法
- 三、实例解析
- 3.1 例子 1
- 3.2 例子 2
- 3.2 例子 3
- 3.4 例子 4
- 3.5 例子 5
- 3.6 例子 6
- 3.7 例子 7
- 3.8 例子 8
- 四、总结
一、简介
Linux join 命令是一个可以将两个文件按照指定的键连接在一起的工具。它使用相同的字段值连接两个文件,并输出结果。join
命令适用于需要将多个文件进行联接的场景,通常与排序命令(如 sort)和文本处理命令(如 awk)结合使用。
二、语法
join 命令的基本语法为:
join [选项] 文件1 文件2
选项包括:
-a FILENUM
:要显示文件中未关联的行。FILENUM 可以取值 1 或 2,分别表示未关联的行在文件1或文件2中。-e EMPTY
:用 EMPTY 来填充关联缺失的字段。默认情况下为空。-t CHAR
:指定字段之间的分隔符,默认为制表符。-1 FIELD
:以文件1的第 FIELD 字段作为键关联。-2 FIELD
:以文件2的第 FIELD 字段作为键关联。
三、实例解析
下面给出 8 个实际的例子来解释 join 命令的用法。
3.1 例子 1
假设有两个文件 file1.txt 和 file2.txt,它们的内容如下:
file1.txt:
1 Tom
2 Jerry
3 Alice
file2.txt:
1 English
2 Math
3 Science
要将这两个文件按第一个字段连接起来,可以使用如下的命令:
$ join file1.txt file2.txt
输出结果为:
1 Tom English
2 Jerry Math
3 Alice Science
join 命令默认以文件中的第一列作为连接键。
3.2 例子 2
如果文件中的键不是按顺序排列的,我们可以先对文件进行排序再进行连接。假设 file1.txt 和 file2.txt 的内容如下:
file1.txt:
2 Jerry
1 Tom
3 Alice
file2.txt:
3 Science
1 English
2 Math
可以使用以下命令进行连接:
$ join <(sort file1.txt) <(sort file2.txt)
输出结果为:
1 Tom English
2 Jerry Math
3 Alice Science
3.2 例子 3
有时候文件中的键可能包含重复项,这会导致连接结果中出现多个匹配。假设 file1.txt 和 file2.txt 的内容如下:
file1.txt:
1 Tom
2 Jerry
2 Alice
file2.txt:
2 English
2 Math
3 Science
可以使用以下命令进行连接:
$ join file1.txt file2.txt
输出结果为:
2 Jerry English
2 Jerry Math
2 Alice English
2 Alice Math
可以看到,重复的键会导致多次匹配。
3.4 例子 4
可以使用 -a
选项来显示未关联的行。假设 file1.txt 和 file2.txt 的内容如下:
file1.txt:
1 Tom
2 Jerry
3 Alice
file2.txt:
2 Math
3 Science
4 English
可以使用以下命令进行连接:
$ join -a 1 file1.txt file2.txt
输出结果为:
1 Tom
2 Jerry Math
3 Alice Science
可以看到,文件1中没有的键 4 English 并没有出现在输出结果中。
3.5 例子 5
可以使用 -e
选项来指定当关联缺失时要填充的内容。假设 file1.txt 和 file2.txt 的内容如下:
file1.txt:
1 Tom
2 Jerry
3 Alice
file2.txt:
2 Math
3 Science
4 English
可以使用以下命令进行连接:
$ join -e NA file1.txt file2.txt
输出结果为:
1 Tom NA
2 Jerry Math
3 Alice Science
可以看到,关联缺失的字段被填充为 “NA”。
3.6 例子 6
通过 -t
选项,可以指定字段之间的分隔符。假设 file1.txt 和 file2.txt 的内容如下:
file1.txt:
1,Tom
2,Jerry
3,Alice
file2.txt:
2,Math
3,Science
4,English
可以使用以下命令进行连接:
$ join -t , file1.txt file2.txt
输出结果为:
2,Jerry,Math
3,Alice,Science
可以看到,通过 -t
选项,我们将字段之间的分隔符指定为逗号。
3.7 例子 7
-1
和 -2
选项可以用于指定连接的键位于文件中的哪一列。假设 file1.txt 和 file2.txt 的内容如下:
file1.txt:
Tom 1
Jerry 2
Alice 3
file2.txt:
English 1
Math 2
Science 3
可以使用以下命令进行连接:
$ join -1 2 -2 2 file1.txt file2.txt
输出结果为:
Tom 1 English
Jerry 2 Math
Alice 3 Science
可以看到,通过 -1
和 -2
选项,我们分别指定了连接键所在的列。
3.8 例子 8
可以连接多个文件。假设 file1.txt、file2.txt 和 file3.txt 的内容如下:
file1.txt:
1 Tom
2 Jerry
3 Alice
file2.txt:
3 Science
1 English
2 Math
file3.txt:
1 Male
2 Male
3 Female
可以使用以下命令进行连接:
$ join file1.txt file2.txt file3.txt
输出结果为:
1 Tom English Male
2 Jerry Math Male
3 Alice Science Female
可以看到,多个文件会按照顺序依次连接。
四、总结
通过本文,我们详细了解了 Linux join 命令的用法及其选项。我们通过几个实际的例子来演示了如何使用 join 命令进行文件联接。join 命令对于需要在 Linux 系统上处理和分析多个文件时非常有用,可以帮助我们高效地处理数据和完成任务。本篇文章就到这里,我们下次见。