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. hdu4888 多校B 最大流以及最大流唯一推断+输出方案

    题意.给一个矩阵,告诉你每行和.每列和.而且限制所填数不大于k,问矩阵是否唯一. 经典建图不说了.第一次遇到推断最大流唯一性的.学习了:用dfs来推断残网中是否还存在环,若存在,则表明绕这个环走一圈, ...

  2. 【VBA】隐藏正在使用的工作簿

    正在使用的工作簿,嫌窗口太多,不利于操作,想把窗口隐藏,该怎么做呢? Public Sub 隐藏正在使用的工作簿() Application.Visible = False MsgBox " ...

  3. Oracle 格式化中文时间

    SELECT TO_CHAR(SYSDATE, 'MM"月"DD"日"') A FROM dual; --注: 当格式字符串当中, 存在 自定义的字符信息的时候 ...

  4. 删除数据库时提示数据库正在被使用,无法删除(Cannot drop database databasename because it is currently in use)的问题

    删除数据库时提示数据库正在被使用,无法删除(Cannot drop database databasename because it is currently in use)的问题   删除数据库时提 ...

  5. EFCore & Mysql migration on Production

    最好的办法是通过脚本进行生产环境数据库更新. 如: dotnet ef migration script -i -o "script.sql". 这样将会产生一个你不用在意线上版本 ...

  6. 500 lines or less

    今天碰到一本书 <500 lines or less>突然就想在博客上记录一下自己的阅读经历了. 现在记录一下这本书的地址 http://aosabook.org/en/index.htm ...

  7. asp.net core 系列之Response caching(1)

    这篇文章简单的讲解了response caching: 讲解了cache-control,及对其中的头和值的作用,及设置来控制response caching; 简单的罗列了其他的缓存技术:In-me ...

  8. hadoop System times on machines may be out of sync. Check system time and time zones.

    之前环境一直好好的,由于玩坏了一个mini3只能复制一个了,但是复制之后就出现这个问题了 解决办法是 设置xshell向每一个窗口发消息http://mofansheng.blog.51cto.com ...

  9. ELK之jason配置nginx文件等多个配置文件

    [root@web02 ~]# cat /etc/logstash/conf.d/nginx.conf input { file { path => "/var/log/nginx/a ...

  10. 解决ubuntukylin下各种终端字母重叠的方案

    ubuntukylin14.04什么都挺好定符合中国人的使用习惯的,可是就是终端字母重叠的问题特别严重;(事实上ubuntu14.04也存在这个问题) 导致非常多非常好用的终端都使用不了,像guake ...