博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
join命令
阅读量:6000 次
发布时间:2019-06-20

本文共 2144 字,大约阅读时间需要 7 分钟。

功能说明:

将两个文件中,指定栏位内容相同的行连接起来。

语法:join [-i][-a<1|2>][-e<string>][-o<格式>] [-t<字符>][-v<1|2>][-1<栏位>][-2<栏位>][--help] [--version][文件1][文件2]

补充说明:

找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。

参数:

-a<1|2>  除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。

-e<字符串[文件1][文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。

-i--igore-case  比较栏位内容时,忽略大小写的差异。

-o<格式按照指定的格式来显示结果。

-t<字符使用栏位的分隔字符。

-v<12>  -a相同,但是只显示文件中没有相同栏位的行。

-1<栏位连接[文件1]指定的栏位。

-2<栏位连接[文件2]指定的栏位。

--help  显示帮助。

--version  显示版本信息。

指定输出字段:

-o <FILENO.FIELDNO> ...

其中fileno=1表示第一个文件,fileno=2表示第二个文件,fieldno表示字段序号,从1开始编号。默认会全部输出,但关键字列只输出一次。

比如:-o 1.1 1.2 2.2 表示输出第一个文件的第一个字段、第二个字段,第二个文件的第二个字段。

使用示例

示例一 内连接(忽略不匹配的行)

不指定任何参数的情况下使用join命令,就相当于数据库中的内连接,关键字不匹配的行不会输出。

[root@rhel55 linux]# cat month_cn.txt

1       一月

2       二月

13      十三月,故意的

[root@rhel55 linux]# cat month_en.txt

1       January

2       February

14      MonthUnknown

注:注意两个文件的内容,中文版的多了十三月,英文版的多了14月,这纯粹是为了方便演示。

[root@rhel55 linux]# join month_cn.txt month_en.txt 

1 一月 January

2 二月 February

[root@rhel55 linux]#

示例二 左连接(又称左外连接,显示左边所有记录)

显示左边文件中的所有记录,右边文件中没有匹配的显示空白。

[root@rhel55 linux]# join -a1 month_cn.txt month_en.txt

1 一月 January

2 二月 February

13 十三月,故意的

[root@rhel55 linux]#

示例三 右连接(又称右外连接,显示右边所有记录)

显示右边文件中的所有记录,左边文件中没有匹配的显示空白。

[root@rhel55 linux]# join -a2 month_cn.txt month_en.txt 

1 一月 January

2 二月 February

14 MonthUnknown

[root@rhel55 linux]#

示例四 全连接(又称全外连接,显示左边和右边所有记录)

[root@rhel55 linux]# join -a1 -a2 month_cn.txt month_en.txt

1 一月 January

2 二月 February

13 十三月,故意的

14 MonthUnknown

[root@rhel55 linux]#

示例五 指定输出字段

比如参数 -o 1.1 表示只输出第一个文件的第一个字段。

[root@rhel55 linux]# join -o 1.1 month_cn.txt month_en.txt

1

2

[root@rhel55 linux]# join -o 1.1 2.2 month_cn.txt month_en.txt  

1 January

2 February

[root@rhel55 linux]# join -o 1.1 2.2 1.2 month_cn.txt month_en.txt

1 January 一月

2 February 二月

[root@rhel55 linux]# join -o 1.1 2.2 1.2 1.3 month_cn.txt month_en.txt 

字段1.3并不存在

1 January 一月

2 February 二月

[root@rhel55 linux]#

示例六 指定分隔符

[root@rhel55 linux]# join -t ':' /etc/passwd /etc/shadow

root:x:0:0:root:/root:/bin/bash:$1$K8WSIAfQ$9i1h6a4V1XeIn0lv.CT53/:14833:0:99999:7:::

bin:x:1:1:bin:/bin:/sbin/nologin:*:14833:0:99999:7:::

原文

http://www.cnblogs.com/agilework/archive/2012/04/18/2454877.html

你可能感兴趣的文章
蔡先生论道大数据之(十五) :什么是数据化运营?
查看>>
visualVM安装插件,无法连接到visualVM 插件中心
查看>>
我的友情链接
查看>>
How To Use Sqoop2 Increment Import
查看>>
系统架构师成功的秘诀 需具备丰富开发经验
查看>>
配置Cacti 0.8.8a监控Memcache
查看>>
puppet学习—安装
查看>>
mac的git的21个客户端
查看>>
Django之form表单实例
查看>>
python 笔记 之带参数的装饰器
查看>>
Spring Cloud + Spring Boot + Mybatis + shiro + RestFul + 微服务 企业分布式微服务云架构技术分享...
查看>>
Spring Cloud自定义引导属性源
查看>>
intellij 怎么把提示的话复制下来
查看>>
Python利用pandas处理Excel数据的应用
查看>>
Wings-让单元测试智能全自动生成
查看>>
vue添加实例属性
查看>>
【更新】Essential Studio for ASP.NET MVC更新至2018 v4(三)
查看>>
java代码中常用的正则表达式
查看>>
OSChina 娱乐弹弹弹——你的程序猿简历能打多少分?
查看>>
OSChina 周日乱弹 ——程序员怎么攒钱买房子!(励志、温情)
查看>>