Hack 11. Join Command

本文详细介绍了如何使用join命令将员工信息文件与奖金分配文件进行结合,包括处理文件顺序不一致的情况,以及如何正确匹配和处理数据差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jion 命令用来combine连个文件,前提是这两个文件有共同的key,或者说有共同的域。如果两个文件域按顺序有不同的话,就会忽略不同的域,而只去combine相同顺序下的有共同field的行。

例如: 我现在有两个文件,一个是:employee.txt,另一个是bonux.txt,彼此行记录一一对应〉

[clu@portal.ny1 hack101]$ cat employee.txt
100 Jason Smith
200 John Doe
300 Sanjay Gupta
400 Ashok Sharma
[clu@portal.ny1 hack101]$ cat bonus.txt
100 $5,000
200 $500
300 $3,000
400 $1,250
[clu@portal.ny1 hack101]$ jion employee.txt bonus.txt
-bash: jion: command not found
[clu@portal.ny1 hack101]$ join employee.txt bonus.txt
100 Jason Smith $5,000
200 John Doe $500
300 Sanjay Gupta $3,000
400 Ashok Sharma $1,250


如果bonux.txt文件中间少了一个记录,那么该行记录就不会被combine。
[clu@portal.ny1 hack101]$ cat bonus.txt
100 $5,000
200 $500
400 $1,250
[clu@portal.ny1 hack101]$ join employee.txt bonus.txt
100 Jason Smith $5,000
200 John Doe $500
400 Ashok Sharma $1,250


如果bonus.txt文件中间多了一行记录,虽然该记录无法匹配,但后面的记录可以匹配〉
[clu@portal.ny1 hack101]$ cat bonus.txt
100 $5,000
200 $500
201 $201
300 $oo
400 $1,250
[clu@portal.ny1 hack101]$ join employee.txt bonus.txt
100 Jason Smith $5,000
200 John Doe $500
300 Sanjay Gupta $oo
400 Ashok Sharma $1,250


经过测试得知:只要被修改的记录是按共同域的合理顺序来排序的,那么linux就可以做到正常的排序, 如下:
[clu@portal.ny1 hack101]$ cat bonus.txt
100 $5,000
200 $500
201 $201
202 $333
300 $oo
400 $222
401 $1,250
[clu@portal.ny1 hack101]$ join employee.txt bonus.txt
100 Jason Smith $5,000
200 John Doe $500
300 Sanjay Gupta $oo
400 Ashok Sharma $222



但是如果顺序不合理的话,linux就不会按正确的顺序来匹配〉
例如:
[clu@portal.ny1 hack101]$ cat bonus.txt
100 $5,000
200 $500
301 $201
302 $333
300 $oo
400 $222
401 $1,250
[clu@portal.ny1 hack101]$ join employee.txt bonus.txt
100 Jason Smith $5,000
200 John Doe $500
join: file 2 is not in sorted order
400 Ashok Sharma $222



--EOF--
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值