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

相关文章:

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

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…...

谈谈网络安全

目录 1.概念 2.发展现状 3.主要问题 1.概念 网络安全是指保护计算机网络和其中的数据免受未经授权访问、损坏、窃取或破坏的过程和技术。网络安全涉及预防和检测潜在的威胁和漏洞&#xff0c;并采取措施保护网络的机密性、完整性和可用性。 网络安全的概念包括以下几个方面&am…...

机器学习深度学习——文本预处理

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——序列模型&#xff08;NLP启动&#xff01;&#xff09; &#x1f4da;订阅专栏&#xff1a;机器学习&am…...

Qt实现可伸缩的侧边工具栏(鼠标悬浮控制伸缩栏)

Qt实现可伸缩的侧边工具栏 一直在网上找&#xff0c;发现大多的实现方案都是用一个按钮&#xff0c;按下控制侧边栏的伸缩&#xff0c;但是我想要实现鼠标悬浮在侧边栏的时候就伸出&#xff0c;移开就收缩的功能&#xff0c;也没找到好的参考&#xff0c;所以决定自己实现一个…...

【Spring Boot】拦截器与统一功能处理

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE进阶 上一篇文章我们讲解了Spring AOP是一个基于面向切面编程的框架&#xff0c;用于将某方面具体问题集中处理&#xff0c;通过代理对象来进行传递&#xff0c;但使用原生Spring AOP实现统一的…...

RabbitMQ的6种工作模式

RabbitMQ的6种工作模式 官方文档&#xff1a; http://www.rabbitmq.com/ https://www.rabbitmq.com/getstarted.html RabbitMQ 常见的 6 种工作模式&#xff1a; 1、simple简单模式 1)、消息产生后将消息放入队列。 2)、消息的消费者监听消息队列&#xff0c;如果队列中…...

MFC第二十六天 CRgn类简介与开发、封装CMemoryDC类并应用开发

文章目录 CRgn类简介与开发CRgn类简介CRgn类区域管理开发CRgn类区域管理与不规则形状的选取 封装CMemoryDC类并应用开发CMemoryDC.h封装CMemoryDC开发游戏透明动画CFlashDlg.hCFlashDlg.cpp 封装CMemoryDC开发游戏动画 附录四大窗口CDC派生类 CRgn类简介与开发 CRgn类简介 CR…...

解决VScode远程服务器时opencv和matplotlib无法直接显示图像的问题

解决VScode远程服务器时opencv和matplotlib无法直接显示图像的问题 1、本方案默认本地已经安装了VScode与MobaXterm2、在服务器端3、在本地端安装MobaXterm4、测试5、opencv显示测试&#xff08;测试过程中需保持MobaXterm开启的状态&#xff09;6、 matplotlib显示测试&#x…...

支付模块功能实现(小兔鲜儿)【Vue3】

支付 渲染基础数据 支付页有俩个关键数据&#xff0c;一个是要支付的钱数&#xff0c;一个是倒计时数据&#xff08;超时不支付商品释放&#xff09; 准备接口 import request from /utils/httpexport const getOrderAPI (id) > {return request({url: /member/order/$…...

php meilisearch demo

# 创建一个meilisearch 使用完自动销毁 docker run -itd --rm -p 7700:7700 getmeili/meilisearch:v1.3docker-compose 参数 version: "3" networks:flyserver:driver: bridge services:search:image: getmeili/meilisearch:v1.3restart: alwaysenvironment:- MEILI…...

芒格之道——查理·芒格股东会讲话1987-2022

你越是认真生活&#xff0c;你的生活就会越美好&#xff01; 这里将读书过程划线的内容摘抄在这里&#xff0c;方便自己回顾。 书分为两部分&#xff0c;我先读了后半部分&#xff0c;而且是从后往前读&#xff0c;到了前半部分&#xff0c;我是从前往后读。书还挺贵&#xff…...

如何运营手游联运平台游戏?

运营手游联运平台游戏需要综合考虑多个方面&#xff0c;包括游戏选择、合作伙伴、市场推广、用户运营等。以下是运营手游联运平台游戏的一些建议&#xff1a; 游戏选择&#xff1a;选择优质的手游&#xff0c;确保游戏的品质和内容能够吸引玩家&#xff0c;满足市场需求。 合…...

vscode连接远程Linux服务器

文章目录 一、环境安装1.1 下载vscode1.2 下载vscode-sever 二、ssh链接2.1 安装Remote-SSH2.2 设置vscode ssh2.3 设置免密登录2.3.1 本地生成公私钥2.3.2 服务器端添加公钥 三、安装插件3.1 vscode安装插件3.1.1 在线安装插件3.1.2.1 下载插件3.1.2.2 安装插件 3.2 vscode-se…...

numpy 转换成 cupy 利用GPU执行 错误

ModuleNotFoundError: No module named cupy._core. routines_sorting 提示缺少包 使用 pyinstaller -D views.py --nocons 可以正常打包出来 但是运行出现报错 说明这个打包工具 忽略了很多 隐式导入的包 解决方法很简单 hiddenimports [fastrlock, fastrlock.rlock, cu…...

力扣:55. 跳跃游戏(Python3)

题目&#xff1a; 给定一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣 示例&#xf…...

Unity 编辑器资源导入处理函数 OnPreprocessAudio :深入解析与实用案例

Unity 编辑器资源导入处理函数 OnPreprocessAudio 用法 点击封面跳转下载页面 简介 在 Unity 中&#xff0c;资源导入是一个非常重要的环节&#xff0c;它决定了资源在项目中的使用方式和效果。Unity 提供了一系列的资源导入处理函数&#xff0c;其中之一就是 OnPreprocessAud…...

mongodb-win32-x86_64-2008plus-3.4.24-signed.msi

Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\Administrator>cd C:\MongoDB\Server\3.4\binC:\MongoDB\Server\3.4\bin>C:\MongoDB\Server\3.4\bin>mongod --help Options:General options:-h [ --help ] …...

java的反射

在java语言中&#xff0c;反射机制是指对于处在运行状态的类&#xff0c;都能够获取到这个类的所有属性和方法。对于任意一个对象&#xff0c;都能够调用它的任意一个方法以及访问它的属性&#xff1b;这种通过动态获取类或对象的属性以及方法从而完成调用功能被称为java语言的…...

MySQL — InnoDB 锁

文章目录 锁共享锁和排他锁意向锁记录锁间隙锁临键锁插入意向锁自增锁 锁 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前&#xff0c;先向系统发出请求&#xff0c;对其加锁。加锁后事务就对该数据对象有了一定的控制&#xff0c;在该事务…...

首批获得金融级行业云平台认证,天翼云深耕行业云

云计算下半场看什么&#xff1f; 无疑是金融、政务、制造等传统政企用户的上云与用云。随着数字经济发展和产业数字化的提速&#xff0c;上云已是政企用户推动其数字化转型不断深入的重要抓手&#xff0c;成为不可阻挡的趋势。 与互联网用户相比&#xff0c;政企用户上云极为…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...