join命令实现文件内容拼接

简介:





join使用介绍
功能说明:将两个文件中,指定栏位内容相同的行连接起来。 

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

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

    参  数: 
   
    -a<1或2>   除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。 
   
    -e<字符串>   若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。 
   
    -i或--igore-case   比较栏位内容时,忽略大小写的差异。 
   
    -o<格式>   按照指定的格式来显示结果。 
   
    -t<字符>   使用栏位的分隔字符。 
   
    -v<1或2>   跟-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       二月3       三月4       四月5       五月6       六月7       七月8       八月9       九月10      十月11      十一月12      十二月13      十三月,故意的 
[root@rhel55 linux]# cat month_en.txt 
1       January2       February3       March4       April5       May6       June7       July8       August9       September10      October11              November12      December14      MonthUnknown
注:注意两个文件的内容,中文版的多了十三月,英文版的多了14月,这纯粹是为了方便演示。 
[root@rhel55 linux]# join month_cn.txt month_en.txt  
1 一月 January2 二月 February3 三月 March4 四月 April5 五月 May6 六月 June7 七月 July8 八月 August9 九月 September10 十月 October11 十一月 November12 十二月 December
[root@rhel55 linux]#
示例二 左连接(又称左外连接,显示左边所有记录)
显示左边文件中的所有记录,右边文件中没有匹配的显示空白。
[root@rhel55 linux]# join -a1 month_cn.txt month_en.txt   
1 一月 January2 二月 February3 三月 March4 四月 April5 五月 May6 六月 June7 七月 July8 八月 August9 九月 September10 十月 October11 十一月 November12 十二月 December13 十三月,故意的 
[root@rhel55 linux]#
 
示例三 右连接(又称右外连接,显示右边所有记录)
显示右边文件中的所有记录,左边文件中没有匹配的显示空白。
[root@rhel55 linux]# join -a2 month_cn.txt month_en.txt  
1 一月 January2 二月 February3 三月 March4 四月 April5 五月 May6 六月 June7 七月 July8 八月 August9 九月 September10 十月 October11 十一月 November12 十二月 December14 MonthUnknown 
[root@rhel55 linux]#
 
示例四 全连接(又称全外连接,显示左边和右边所有记录)
[root@rhel55 linux]# join -a1 -a2 month_cn.txt month_en.txt 
1 一月 January2 二月 February3 三月 March4 四月 April5 五月 May6 六月 June7 七月 July8 八月 August9 九月 September10 十月 October11 十一月 November12 十二月 December13 十三月,故意的14 MonthUnknown 
[root@rhel55 linux]#
 
示例五 指定输出字段
比如参数 -o 1.1 表示只输出第一个文件的第一个字段。
[root@rhel55 linux]# join -o 1.1 month_cn.txt month_en.txt 
123456789101112[root@rhel55 linux]# join -o 1.1 2.2 month_cn.txt month_en.txt   
1 January2 February3 March4 April5 May6 June7 July8 August9 September10 October11 November12 December
[root@rhel55 linux]# join -o 1.1 2.2 1.2 month_cn.txt month_en.txt 
1 January 一月2 February 二月3 March 三月4 April 四月5 May 五月6 June 六月7 July 七月8 August 八月9 September 九月10 October 十月11 November 十一月12 December 十二月
[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 二月 
3 March 三月 
4 April 四月 
5 May 五月 
6 June 六月 
7 July 七月 
8 August 八月 
9 September 九月 
10 October 十月 
11 November 十一月 
12 December 十二月 
[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:::
daemon:x:2:2:daemon:/sbin:/sbin/nologin:*:14833:0:99999:7:::
adm:x:3:4:adm:/var/adm:/sbin/nologin:*:14833:0:99999:7:::
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin:*:14833:0:99999:7:::
sync:x:5:0:sync:/sbin:/bin/sync:*:14833:0:99999:7:::
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown:*:14833:0:99999:7:::
halt:x:7:0:halt:/sbin:/sbin/halt:*:14833:0:99999:7:::
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin:*:14833:0:99999:7:::
news:x:9:13:news:/etc/news::*:14833:0:99999:7:::
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin:*:14833:0:99999:7:::operator:x:11:0:operator:/root:/sbin/nologin:*:14833:0:99999:7:::
games:x:12:100:games:/usr/games:/sbin/nologin:*:14833:0:99999:7:::
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin:*:14833:0:99999:7:::
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin:*:14833:0:99999:7:::
nobody:x:99:99:Nobody:/:/sbin/nologin:*:14833:0:99999:7:::
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin:!!:14833:0:99999:7:::
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin:!!:14833:0:99999:7:::
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin:!!:14833:0:99999:7:::
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin:!!:14833:0:99999:7:::
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin:!!:14833:0:99999:7:::
pcap:x:77:77::/var/arpwatch:/sbin/nologin:!!:14833:0:99999:7:::
ntp:x:38:38::/etc/ntp:/sbin/nologin:!!:14833:0:99999:7:::
dbus:x:81:81:System message bus:/:/sbin/nologin:!!:14833:0:99999:7:::
avahi:x:70:70:Avahi daemon:/:/sbin/nologin:!!:14833:0:99999:7:::
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin:!!:14833:0:99999:7:::
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin:!!:14833:0:99999:7:::
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin:!!:14833:0:99999:7:::
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin:!!:14833:0:99999:7:::
avahi-autoipd:x:100:101:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin:!!:14833:0:99999:7:::
oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin:!!:14833:0:99999:7:::
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin:!!:14833:0:99999:7:::
gdm:x:42:42::/var/gdm:/sbin/nologin:!!:14833:0:99999:7:::
sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin:!!:14833:0:99999:7:::
oracle:x:500:500::/opt/oracle:/bin/bash:$1$v64Pa.m.$GZMrQiOWCdQPF8XKtWju30:14833:0:99999:7:::
mysql:x:101:104:MySQL server:/var/lib/mysql:/bin/bash:!!:14866::::::




      本文转自Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1978788,如需转载请自行联系原作者




相关文章
|
6月前
如何批量复制多个文件到多个目录中(提取匹配法)
该文介绍了一个工具的使用方法,用于将带有特定数字的文件或文件夹自动归类到相应数字命名的文件夹中。操作步骤包括:下载工具(链接在文中提供)、打开工具选择“文件批量复制”功能、设置匹配规则(如从文件名中提取数字)并预览效果,最后执行复制操作。通过示例展示了如何处理“-数字.png”格式的文件,以及如何过滤掉特定格式的图片。该工具适用于处理大量按规则命名的文件,提高整理效率。
|
6月前
|
存储 人工智能 资源调度
【windows批处理batch】.bat文件 字符串处理相关操作(字符串定义、分割、拼接、替换、切片、查找)
【windows批处理batch】.bat文件 字符串处理相关操作(字符串定义、分割、拼接、替换、切片、查找)
|
6月前
|
弹性计算 运维 Shell
|
6月前
|
机器学习/深度学习 定位技术 数据格式
Python对大量表格文件加以数据截取、逐行求差、跨文件合并等处理的方法
Python对大量表格文件加以数据截取、逐行求差、跨文件合并等处理的方法
133 1
|
搜索推荐 Python
python将txt文档中的内容按字母顺序进行排序,并存入txt中
python将txt文档中的内容按字母顺序进行排序,并存入txt中
278 0
|
Shell
Shell 过滤数据(cut 截取过滤列)
Shell 过滤数据(cut 截取过滤列)
93 0
|
C语言
【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )
【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )
262 0
|
PHP Python
Python合并多个Word文件并批量添加分页符
本文介绍基于Python,实现对多个Word文档加以自动合并,并在每次合并时按要求增添一个分页符的方法~
476 1
Python合并多个Word文件并批量添加分页符
|
SQL 数据挖掘 数据库
DataFrame多表合并拼接函数concat、merge参数详解+代码操作展示
DataFrame多表合并拼接函数concat、merge参数详解+代码操作展示
848 0
DataFrame多表合并拼接函数concat、merge参数详解+代码操作展示