join命令

join命令用于将两个文件中,指定栏位内容相同的行连接起来。其首先找出两个文件中指定栏位内容相同的行,并加以合并,再输出到标准输出设备。

语法

join [OPTION]... FILE1 FILE2

参数

  • -a FILENUM: 从FILENUM打印不成对的行,其中FILENUM是1或2,对应于FILE1或FILE2。
  • -e EMPTY: 将缺少的输入字段替换为空。
  • -i, --ignore-case: 比较字段时忽略大小写的差异。
  • -j FIELD: 相当于-1 FIELD -2 FIELD。
  • -o FORMAT: 构造输出线时遵守FORMAT。
  • -t CHAR: 使用CHAR作为输入和输出字段分隔符。
  • -v FILENUM: 类似于-a FILENUM,但不连接输出行。
  • -1 FIELD: 加入文件1的这个FIELD。
  • -2 FIELD: 加入文件2的这个FIELD。
  • --check-order: 检查输入是否正确排序,即使所有输入行都可以配对。
  • --nocheck-order: 不要检查输入是否正确排序。
  • --header: 将每个文件的第一行视为字段标题,无需尝试将它们配对即可打印它们。
  • --help: 显示帮助信息。
  • --version: 显示版本信息。

示例

file1.txt与file2.txt文件内容如下:

# file1.txt
1 AAYUSH
2 APAAR
3 HEMANT
4 KARTIK
5 TIM # file2.txt
1 101
2 102
3 103
4 104

使用join命令合并文件,为了合并两个文件,文件必须具有一些公共字段,此时两个文件中的公共字段均带有编号1、2...。

join file1.txt file2.txt
# 1 AAYUSH 101
# 2 APAAR 102
# 3 HEMANT 103
# 4 KARTIK 104

使用-a选项打印FILE1中已成对的行并链接以及不成对的行。

join file1.txt file2.txt -a 1
# 1 AAYUSH 101
# 2 APAAR 102
# 3 HEMANT 103
# 4 KARTIK 104
# 5 TIM

使用-v选项打印FILE1中不成对的行。

join file1.txt file2.txt -v 1
# 5 TIM

join会在第一个公共字段上组合文件行,该字段是默认值。但是这两个文件中的公共值不一定总是第一个列,所以join可以使用-1, -2指定公共值位置。-1和-2表示第一个和第二个文件,这些选项需要一个数字参数,该参数引用相应文件的连接字段。

`file1.txt`与`file2.txt`文件内容如下:
# file1.txt
AAYUSH 1
APAAR 2
HEMANT 3
KARTIK 4
TIM 5 # file2.txt
101 1
102 2
103 3
104 4
join -1 2 -2 2 file1.txt file2.txt
# 1 AAYUSH 101
# 2 APAAR 102
# 3 HEMANT 103
# 4 KARTIK 104

对于上面的示例,我们直接使用-j参数也可以实现。

join -j 2 file1.txt file2.txt
# 1 AAYUSH 101
# 2 APAAR 102
# 3 HEMANT 103
# 4 KARTIK 104

每日一题

https://github.com/WindrunnerMax/EveryDay

参考

https://www.computerhope.com/unix/ujoin.htm
https://www.runoob.com/linux/linux-comm-join.html
https://www.geeksforgeeks.org/join-command-linux/

join命令的更多相关文章

  1. Linux下Join命令

    Linux下Join命令 最近新上线算法,打算分析起点书籍点击率的波动,原来已经有流程每天每本书籍的点击率数据(文件).之前这种情况都是写代码对不同天的进行合并,后来发现linux下直接就有join命 ...

  2. join命令详解

    基础命令学习目录首页 原文链接:https://www.cnblogs.com/agilework/archive/2012/04/18/2454877.html 功能说明:将两个文件中,指定栏位内容 ...

  3. Linux shell join命令详解

    Linux join命令 2012-02-09 17:49:00| 分类: SHELL | 标签:linux join 文件连接 |字号 订阅join命令 功能:“将两个文件里指定栏位同样的行连接起来 ...

  4. [转]linux 下 join命令总结

    转自:http://blog.chinaunix.net/uid-20754793-id-177777.html 有两个文件需要合并,开始写了脚本实现,忽然发现join命令能够完全替代,总结了一下jo ...

  5. [shell基础]——join命令

    测试文本内容 # cat -n name1.txt 1 name1 alvin1 2 name2 alvin2 3 name3 alvin3 4 name4 alvin4 # cat -n name2 ...

  6. Linux:join命令详解

    join 处理两个文件之间的数据,并且将两个文件中有相同的数据的那一行加在一起 语法 join(选项)(file1 file2) 选项 -a<1或2>:除了显示原来的输出内容之外,还显示指 ...

  7. net ads join 和net rpc join命令的区别

    要将主机加入Active Directory(AD),请输入: #net ads加入-U administrator 输入管理员密码:Passw0rd 使用短域名 - SAMDOM 加入'M1'到dn ...

  8. Linux操作命令(八)1.sort命令 2.uniq命令 3.join命令

    1.sort,排序 常用参数 参数 描述 -n 基于字符串的长度来排序,使用此选项允许根据数字值排序,而不是字母值 -k 指定排序关键字 -b 默认情况下,对整行进行排序,从每行的第一个字符开始.这个 ...

  9. linux join命令

    http://note.youdao.com/noteshare?id=151c4844cac74e9b08c5dc954a1a4967

  10. kubeadm join 命令执行流程

随机推荐

  1. 【MicroPython】生成模块表py\objmodule.c中结构mp_rom_map_elem_t - py\makemoduledefs.py

    查找文件中的模块注册标记MP_REGISTER_MODULE pattern = re.compile(r"[\n;]\s*MP_REGISTER_MODULE\((.*?),\s*(.*? ...

  2. 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.12.21)

    一.百度网盘SVIP超级会员共享账号 可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答. 我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免 ...

  3. Springboot开发的应用为什么这么占用内存

    Springboot开发的应用为什么这么占用内存 Java的原罪 Java 程序员比 c或者是c++程序员相比轻松了很多. 不要管理繁杂的内存申请与释放,也不用担心因为忘记释放内存导致很严重的内存泄漏 ...

  4. [转帖]tgz 安装clickhouse

    一.什么是clickhouse ClickHouse是开源的列式存储数据库(DBMS),主要用于在线处理查询(OLAP),能够使用SQL查询实时生成数据分析报告. 下面介绍下安装clickhouse. ...

  5. [转帖]Kibana查询语言(KQL)

    时间  2020-12-27 标签 html java 数据库 ide ui 翻译 日志 htm 对象 blog 栏目 HTML 繁體版 原文   https://www.cnblogs.com/-b ...

  6. git提交出现running pre-commit hook: lint-staged

    现象 今天提交代码的时候出现了 > running pre-commit hook: lint-staged Stashing changes... [started] Stashing cha ...

  7. 【VictoriaMetrics源码阅读】: vm中对map的优化

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu github 公众号:一本正经的瞎扯 具体代码请看:https://github.com/ahf ...

  8. linux如何配置ssh密钥登录

    为什么要用ssh密钥登录 购买的服务器设置密码很容易被暴力破解,用密钥登录安全很多.root用户新建的用户也要用密钥登录更安全,如果一直su - 用户名登录 不方便 用xftp等服务上传文件到用户使用 ...

  9. 6.6 Windows驱动开发:内核枚举Minifilter微过滤驱动

    Minifilter 是一种文件过滤驱动,该驱动简称为微过滤驱动,相对于传统的sfilter文件过滤驱动来说,微过滤驱动编写时更简单,其不需要考虑底层RIP如何派发且无需要考虑兼容性问题,微过滤驱动使 ...

  10. 19.6 Boost Asio 文本压缩传输

    Base64是一种二进制到文本的编码方案,用于将二进制数据转换为ASCII字符串格式.它通过将二进制数据流转换为一系列64个字符来工作,这些字符都可以安全地传输到设计用于处理文本数据的系统中. 如下代 ...