返回顶部
分享到

Linux join命令的使用及说明

linux 来源:互联网 作者:佚名 发布时间:2025-11-11 22:48:38 人浏览
摘要

一. 基本语法 join 是 Linux 中用于按字段将两个文件进行连接的命令,功能类似 SQL 的 JOIN。 要求两个文件按 用于匹配的字段排序好,一定要排序,否则无法正确join 要求用于join的第一个文件的

一. 基本语法

join 是 Linux 中用于按字段将两个文件进行连接的命令,功能类似 SQL 的 JOIN。

  • 要求两个文件按 用于匹配的字段排序好,一定要排序,否则无法正确join
  • 要求用于join的第一个文件的换行符是LF,一定不能是CRLF,否则无法正确匹配
参数 说明
-1 N 指定 file1 用第 N 字段作为连接键
-2 N 指定 file2 用第 N 字段作为连接键
-t CHAR 设置字段分隔符(如 -t , 表示用逗号)
-o FORMAT 指定输出字段的格式,例如:-o 0 1.2 2.3
-a 1 输出 file1 中所有行(即使没有匹配),相当于 LEFT OUTER JOIN
-a 2 输出 file2 中所有行(即使没有匹配),相当于 RIGHT OUTER JOIN
-a 1 -a 2 输出所有行(匹配和未匹配),相当于 FULL OUTER JOIN
-e STRING 指定空字段填充值,用于 -a 显示未匹配时
-i 忽略大小写(等价于 --ignore-case)
-v 1 仅显示 file1 中未匹配的行
-v 2 仅显示 file2 中未匹配的行

二. 数据准备

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

apluser@FengYeHong-HP:0725$ cat students1.txt

101 Alice

102 Bob

103 Carol

apluser@FengYeHong-HP:0725$ cat scores1.txt

101 80

102 90

104 95

apluser@FengYeHong-HP:0725$ cat students2.txt

101,Alice

102,Bob

103,Carol

apluser@FengYeHong-HP:0725$ cat scores2.txt

Alice,80

Bob,90

fengyehong,95

三. 指定文件的连接key

‘默认情况下使用文件的第1列进行join

1

2

3

apluser@FengYeHong-HP:0725$ join students1.txt scores1.txt

101 Alice 80

102 Bob 90

  • 1 1 -2 1:指定第1个文件的第1列和第2个文件的第1列作为join的key
  • -t, -1 2 -2 1:
    • -t, :默认情况下使用空格作为列之间的分隔符,通过-t手动指定分隔符为逗号
    • -1 2 -2 1:指定第1个文件的第2列和第2个文件的第1列作为join的key

1

2

3

4

5

6

apluser@FengYeHong-HP:0725$ join -1 1 -2 1 students1.txt scores1.txt

101 Alice 80

102 Bob 90

apluser@FengYeHong-HP:0725$ join -t, -1 2 -2 1 students2.txt scores2.txt

Alice,101,80

Bob,102,90

四.-a输出指定文件的所有行

  • -a 1:输出第1个文件的所有行,相当于左连接
  • -a 2:输出第2个文件的所有行,相当于右连接

1

2

3

4

5

6

7

8

apluser@FengYeHong-HP:0725$ join -a 1 students1.txt scores1.txt

101 Alice 80

102 Bob 90

103 Carol

apluser@FengYeHong-HP:0725$ join -a 2 students1.txt scores1.txt

101 Alice 80

102 Bob 90

104 95

  • -a 1 -a 2:输出所有行

1

2

3

4

5

apluser@FengYeHong-HP:0725$ join -a 1 -a 2 students1.txt scores1.txt

101 Alice 80

102 Bob 90

103 Carol

104 95

五.-o指定输出的字段

  • -o 1.2 2.2 2.3:
    • 输出第1个文件的第2个字段
    • 输出第2个文件的第2个和第3个字段

1

2

3

4

5

6

7

8

9

10

11

12

13

14

apluser@FengYeHong-HP:0725$ cat address1.txt

101 地球 火星

102 水星 金星

104 木星 土星

apluser@FengYeHong-HP:0725$ join students1.txt address1.txt

101 Alice 地球 火星

102 Bob 水星 金星

 

apluser@FengYeHong-HP:0725$ join -o 1.2 2.2 2.3 students1.txt address1.txt

Alice 地球 火星

Bob 水星 金星

apluser@FengYeHong-HP:0725$ join -o 1.2,2.2,2.3 students1.txt address1.txt

Alice 地球 火星

Bob 水星 金星

六.-v指定输出未匹配的行

  • 输出第1个和第2个文件中未匹配的内容

1

2

3

4

apluser@FengYeHong-HP:0725$ join -v 1 students1.txt address1.txt

103 Carol

apluser@FengYeHong-HP:0725$ join -v 2 students1.txt address1.txt

104 木星 土星

  • 输出第1个和第2个文件中未匹配的内容

1

2

3

apluser@FengYeHong-HP:0725$ join -v 1 -v 2 students1.txt address1.txt

103 Carol

104 木星 土星


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • Linux join命令的使用及说明
    一. 基本语法 join 是 Linux 中用于按字段将两个文件进行连接的命令,功能类似 SQL 的 JOIN。 要求两个文件按 用于匹配的字段排序好,一定要
  • Centos 7配置国内yum源的教程

    Centos 7配置国内yum源的教程
    鉴于 CentOS 7 已结束官方支持(EOL),但许多生产环境仍在使用 CentOS 7 或更旧版本。为此,需切换至国内镜像源以确保正常使用。本文将详细
  • Linux中的HTTPS协议原理

    Linux中的HTTPS协议原理
    不是有了HTTP了吗??为什么还要有HTTPS呢?? HTTPS也是一个应用层协议,是在HTTP协议的基础上引入的一个加密层,他的产生是由于HTTP协议内
  • Apache Ignite缓存基本操作实例
    这段内容主要讲解了Apache Ignite中缓存(IgniteCache)的基本操作,包括获取缓存、创建缓存、销毁缓存、执行原子操作以及异步操作等。下面
  • K8s使用kubectl访问api-server失败,node“XXX“ not foun

    K8s使用kubectl访问api-server失败,node“XXX“ not foun
    K8s 使用 kubectl 访问 api-server 失败,报错node XXX not found。本文提供一种解决思路。 解决步骤 (1)使用 kubectl 1 kubectl get node The connection to th
  • Linux线程之线程的创建、属性、回收、退出、取消

    Linux线程之线程的创建、属性、回收、退出、取消
    1. 线程号 进程号在系统中唯一,但线程号只在其所属进程环境中有效。 (1)pthread_self函数 1 2 3 4 5 6 7 8 9 #includepthread.h pthread_t pthread_self(v
  • Linux journal日志大小限制与管理
    Linux journal 日志大小限制与管理详解 在使用基于systemd的 Linux 系统时,日志系统默认采用journald来管理系统日志。相比传统的rsyslog或syslog,
  • linux服务之.service文件使用及说明
    .service文件是 Linux 系统中systemd服务管理器的配置文件,用于定义如何启动、管理和监控系统服务(如后台程序、守护进程等)。以下是它的
  • Linux SSHD启动失败:OpenSSL版本不匹配问题分析与解

    Linux SSHD启动失败:OpenSSL版本不匹配问题分析与解
    Linux SSHD 启动失败:OpenSSL 版本不匹配问题分析与解决 在 Linux 服务器上,sshd可能因 OpenSSL 版本不匹配而启动失败,具体错误信息如下: 1
  • Linux中SSH服务配置的全面指南
    作为网络安全工程师,SSH(Secure Shell)服务的安全配置是我们日常工作中不可忽视的重要环节。本文将从基础配置到高级安全加固,全面解
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计