Linux join命令

2012-02-09 17:49:00| 分类: SHELL | 标签:linux join 文件连接 |字号 订阅
join命令
功能:“将两个文件里指定栏位同样的行连接起来”,即依照两个文件里共有的某一列,将相应的行拼接成一行。
join [options] file1 file2
注:这两个文件必须在已经在此列上是依照同样的规则进行了排序。
join选项
-a FILENUM:除了显示匹配好的行另外将指定序号(1或2)文件里部匹配的行显示出来
-e EMPTY:将须要显示可是文件里不存在的域用此选项指定的字符取代
-i :忽略大写和小写
-j FIELD :等同于 -1 FIELD -2 FIELD,-j指定一个域作为匹配字段
-o FORMAT:以指定格式输出
-t CHAR :以指定字符作为输入输出的分隔符
join 默认以空白字符做分隔符(空格和\t),能够使用 join -t $'\t'来指定使用tab做分隔符
-v FILENUM:与-a相似 但值显示文件里没匹配上的行
-1 FIELD:以file1中FIELD字段进行匹配
-2 FIELD:以file2中FIELD字段进行匹配
--help :打印命令帮助文件
样例:
文件 file1.txt
aa 1 2
bb 2 3
cc 4 6
dd 3 3
文件file2.txt
aa 2 1
bb 8 2
ff 2 4
cc 4 4
dd 5 5

1.join file1.txt file2.txt
输出:aa 1 2 2 1
bb 2 3 8 2
默认已两个文件的第一行做匹配字段,默认以空格(不限个数)做分隔符。
2.join -j 1 file1.txt file2.txt
输出:aa 1 2 2 1
bb 2 3 8 9
-j选项 指定了以两个文件里第一列做匹配字段 等同于join file1.txt file2.txt
3. join -1 2 -2 3 file1.txt file2.txt
输出: 1 aa 2 aa 2
2 bb 3 bb 8
4 cc 6 ff 2
4 cc 6 cc 4
以第一个文件的第二列和第二个文件的第三列做匹配字段。因为第二个文件里第三列的两个3 都与第一个文件里第三行因此输出
4 cc 6 ff 2
4 cc 6 cc 4
4 join -o 1.1 -o 1.2 -o 1.3 -o 2.1 -o 2.2 -o 2.3 -e 'empty' -a 1 file1.txt file2.txt
输出: aa 1 2 aa 2 1
bb 2 3 bb 8 2
cc 4 6 empty empty empty
dd 3 3 empty empty empty
-o 指定 将file1的1,2,3列,file2的1,2,3 列都输出。-a指定将file1中不匹配的行也输出,可是file2中沒有与file1后两行相应的字段,因此使用empty补齐。

5.join -v 1 file1.txt file2.txt
输出: cc 4 6
dd 3 3
-v 1 将file1中不匹配的行输出
PS:join命令和数据库中的join命令很相似。
尽管file1和file2都已经排序,可是因为在第三行时開始不匹配因此仅仅匹配上了前两行,后面的行尽管字段也能够相应可是以不能匹配。join命令,对文件格式的要求很强,假设想要更灵活的使用,可用AWK命令,參加AWK实例

6. join 标准输入
有时我们须要将多个格式同样的文件join到一起,而join接受的是两个文件的指令,此时我们能够使用管道和字符“-"来实现
join file1 file2 | join - file3 | join - file4
这样就能够将四个文件 连接到 一起了。

Linux shell join命令详解的更多相关文章

  1. Linux shell tr 命令详解

    该随笔摘自 https://www.jb51.net/article/103892.htm Linux shell tr 命令详解 1. 用途 tr,translate的简写,主要用于压缩重复字符,删 ...

  2. Linux shell sed 命令详解

    详细的sed命令详解,请参考https://my.oschina.net/u/3908182/blog/1921761 sed命令常见用途 查找关键词做全局替换 查找某行的关键词做替换 查找关键字所在 ...

  3. linux shell ansible 命令详解

    也可以参考ansible 模块介绍的其他文章:https://www.cnblogs.com/guxiaobei/p/8316903.html 安装ansible yum install epel-r ...

  4. Linux:join命令详解

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

  5. linux shell seq命令详解

    seq: squeue  是一个序列的缩写,主要用来输出序列化的东西 seq常见命令参数 用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 ...

  6. Linux shell cut 命令详解

    详细资料请参考:博客园骏马金龙 https://www.cnblogs.com/f-ck-need-u/p/7521357.html cut命令将行按指定的分隔符分割成多列,它的弱点在于不好处理多个分 ...

  7. Linux Shell系列教程之(八)Shell printf命令详解

    本文是Linux Shell系列教程的第(八)篇,更多shell教程请看:Linux Shell系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell p ...

  8. 【转帖】Linux定时任务Crontab命令详解

    Linux定时任务Crontab命令详解 https://www.cnblogs.com/intval/p/5763929.html 知道有crontab 以及 at 命令 改天仔细学习一下 讲sys ...

  9. [转帖]Linux:cut命令详解

    Linux:cut命令详解 https://www.cnblogs.com/Spiro-K/p/6361646.html cut -f cut -f -d cut -c1- 这三个命令好像最常见, 记 ...

随机推荐

  1. S1:适配器 Adapter

    将一个类的接口转换为用户期望的另外一个接口.适配器使得原本由于接口不兼容而不能一起工作的类可以一起工作   UML: 一.类适配器: class A { public function methodA ...

  2. Python3链接MySQL数据库

    Python 2.x 上连接MySQL的库倒是不少的,其中比较著名就是MySQLdb(Django项目都使用它:我也在开发测试系统时也使用过),见:http://sourceforge.net/pro ...

  3. STL学习笔记(迭代器配接器)

    Reverse(逆向)迭代器 Reverse迭代器是一种配接器. 重新定义递增运算和递减运算.使其行为正好倒置. 如果你使用这类迭代器,算法将以逆向次序处理元素.所有标准容器都允许使用Reverse迭 ...

  4. javascript---》arguments对象

    使用arguments可以直接访问函数传入的实参 如:arguments[0]访问第一个参数,arguments[1]访问第二个参数 arguments.length检测函数的参数个数 如: func ...

  5. SpringMVC传值(对象或字符串)给前台js

    java对象到js对象 1.先使用Jackson把对象转换成json串 ObjectMapper objectMapper = new ObjectMapper(); String json = ob ...

  6. py定义变量-循环-条件判断

    定义变量 # print('hahaha')name = " let'go "title = '刘伟长得 "很帅"!'conent = '''     let' ...

  7. Java 分页之最简单的算法

    分页实现有很多方式,如jQuery自带框架pagination或在java封装一个类pager等.   下写一个简单易懂的分页算法   逻辑:   // 步骤1:设置每页页数大小 long pageS ...

  8. Android中database所在文件夹路径(9.6)

    1 sd----->data---->对应app---->databases----->创建的db 2 push到pc上,可以使用GUI工具SQLiteSpy直接查看datab ...

  9. C# 接口的隐式与显示实现说明

    以前在用到接口时,从来没注意到接口分为隐式实现与显示实现.昨天在浏览博客时看到相关内容,现在根据自己的理解记录一下,方便日后碰到的时候温习温习. 通俗的来讲,"显示接口实现"就是使 ...

  10. Delphi 泛型(三十篇)

    Delphi 泛型(三十篇)http://www.cnblogs.com/jxgxy/category/216671.html