Linux命令200例:join将两个文件按照指定的键连接起来分析

文章目录


一、简介

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 系统上处理和分析多个文件时非常有用,可以帮助我们高效地处理数据和完成任务。本篇文章就到这里,我们下次见。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值