前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux中join命令介绍

Linux中join命令介绍

原创
作者头像
似水流年o
发布2024-04-01 19:46:24
1000
发布2024-04-01 19:46:24

Linux中有关join的命令;

join命令作用:

  • 将Linux中的两个文本按照一定的规则进行连接。类似于MySQL中的连接语句 (内连接、左连接、右连接)

语法介绍

代码语言:javascript
复制
join [选项] 文件1 文件2

常用选项包括:

代码语言:javascript
复制
-a 文件编号:将文件编号指定的文件中没有匹配的行也输出。
-e 字符串:用字符串替代文件1或文件2中没有匹配的字段。
-i:在比较字段时忽略大小写。
-t 字符:指定字段的分隔符,默认为制表符。
-v 文件编号:只输出指定文件编号的文件中没有匹配的行。
-1 字段:指定文件1中用于比较的字段编号。
-2 字段:指定文件2中用于比较的字段编号。

join实战:

  • 注意:在Linux中使用join连接首先要对匹配的字段进行排序,否则可能会出现错误
  • 内连接
代码语言:javascript
复制
cat 1.txt
1 a
4 b
3 c
5 d

cat 2.txt
1 y
9 f
5 m

// 第一个字段进行内连接,先排序
sort -k 1 1.txt > 3.txt
sort -k 1 2.txt > 4.txt

cat 3.txt
1 a
3 c
4 b
5 d

cat 4.txt
1 y
5 m
9 f

//内连接('-1 1 -2 1'表示匹配规则,相当于MySQL中的where,表示第一个文件(3.txt)的第一个字段和第二个文件(4.txt)的第一个字段进行匹配)
join -1 1 -2 1 3.txt 4.txt 
1 a y
5 d m

  • 左连接
代码语言:javascript
复制
cat 1.txt
1 a
4 b
3 c
5 d

cat 2.txt
1 y
9 f
5 m

// 第一个字段进行左连接,先排序
sort -k 1 1.txt > 3.txt
sort -k 1 2.txt > 4.txt

cat 3.txt
1 a
3 c
4 b
5 d

cat 4.txt
1 y
5 m
9 f

//左连接 (相当于MySQL中的left join)
join -1 1 -2 1 -a1 3.txt 4.txt 
1 a y
3 c
4 b
5 d m

  • 右连接
代码语言:javascript
复制
cat 1.txt
1 a
4 b
3 c
5 d

cat 2.txt
1 y
9 f
5 m

// 第一个字段进行左连接,先排序
sort -k 1 1.txt > 3.txt
sort -k 1 2.txt > 4.txt

cat 3.txt
1 a
3 c
4 b
5 d

cat 4.txt
1 y
5 m
9 f

//左连接 (相当于MySQL中的right join)
join -1 1 -2 1 -a2 3.txt 4.txt 
1 a y
5 d m
9 f

  • 输出指定字段
代码语言:javascript
复制
cat 1.txt
1 a
4 b
3 c
5 d

cat 2.txt
1 y
9 f
5 m

// 第一个字段进行左连接,先排序
sort -k 1 1.txt > 3.txt
sort -k 1 2.txt > 4.txt

cat 3.txt
1 a
3 c
4 b
5 d

cat 4.txt
1 y
5 m
9 f

//内连接('-o 1.1 2.2'表示输出第一个文件第一个字段,第二个文件第二个字段)
join -1 1 -2 1 -o 1.1 2.2 3.txt 4.txt
1 y
5 m

  • 输出未匹配到的数据
代码语言:javascript
复制
cat 1.txt
1 a
4 b
3 c
5 d

cat 2.txt
1 y
9 f
5 m

// 第一个字段进行左连接,先排序
sort -k 1 1.txt > 3.txt
sort -k 1 2.txt > 4.txt

cat 3.txt
1 a
3 c
4 b
5 d

cat 4.txt
1 y
5 m
9 f

//未匹配到数据('-v 1'表示输出第1个文件中未匹配到数据)
join -v 1 -1 1 -2 1 3.txt 4.txt
3 c
4 b

//未匹配到数据('-v 2'表示输出第2个文件中未匹配到数据)
join -v 1 -1 1 -2 1 3.txt 4.txt
9 f

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • join命令作用:
  • 语法介绍
  • 常用选项包括:
  • join实战:
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com