当前位置: 首页 > news >正文

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

在这里插入图片描述

🏆作者简介,黑夜开发者,全栈领域新星创作者✌。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 系统上处理和分析多个文件时非常有用,可以帮助我们高效地处理数据和完成任务。本篇文章就到这里,我们下次见。

http://www.lryc.cn/news/113840.html

相关文章:

  • 谈谈网络安全
  • 机器学习深度学习——文本预处理
  • Qt实现可伸缩的侧边工具栏(鼠标悬浮控制伸缩栏)
  • 【Spring Boot】拦截器与统一功能处理
  • RabbitMQ的6种工作模式
  • MFC第二十六天 CRgn类简介与开发、封装CMemoryDC类并应用开发
  • 解决VScode远程服务器时opencv和matplotlib无法直接显示图像的问题
  • 支付模块功能实现(小兔鲜儿)【Vue3】
  • php meilisearch demo
  • 芒格之道——查理·芒格股东会讲话1987-2022
  • 如何运营手游联运平台游戏?
  • vscode连接远程Linux服务器
  • numpy 转换成 cupy 利用GPU执行 错误
  • 力扣:55. 跳跃游戏(Python3)
  • Unity 编辑器资源导入处理函数 OnPreprocessAudio :深入解析与实用案例
  • mongodb-win32-x86_64-2008plus-3.4.24-signed.msi
  • java的反射
  • MySQL — InnoDB 锁
  • 首批获得金融级行业云平台认证,天翼云深耕行业云
  • 浅谈Python解释器的组成
  • 服务限流治理
  • 机器学习笔记 - 使用CLIP在没有数据的情况下创建图像分类器
  • 42.利用 牛顿迭代法解非线性高维方程组(matlab程序)
  • 我在leetcode用动态规划炒股
  • rust实践-异步并发socket通信
  • SolidUI社区-根据Prompt打造人设
  • 设计模式行为型——观察者模式
  • Kernel Exception导致手机重启案例分析
  • C++入门篇5---模板
  • L2CS-Net: 3D gaze estimation