shell学习十五天----join连接字段

使用join连接字段

join命令将多个文件结合起来,每个人建立的每条记录,都共享一个键值,键值指的是记录中的珠子段,通常会是用户名称,个人形式,员工编号之类的数据.

语法:

join [options...] file1 file2

主要选项

-1 field1

-2 field2

标明要结合的字段. -1 field指的是从file1取出field1,-2field2指的则为从file2取出field2.字段编号自1开始,而非0.

-o file.field

输出file文件中的field字段.一般的字段则不打印.除非使用多个-o选项,即可显示多个输出字段.

-t separator

使用separator作为输入字段分割字符,而非使用空白.次字符也为输出的字段分割字符.

行为模式

读取file1file2,并根据共同键值结合多笔记录.默认以空白分隔字段.输出结果则包括共同键值,来自file1的其余记录,接着file2的其余记录(指除了键值外的记录).file1-,join会读取标准输入,每个文件的第一个字段是用来结合的默认键值;可以使用-1-2更改键值.默认情况下,在两个文件中未含键值的行将不打印.

Linux join命令用于将两个文件中,指定栏位内容相同的行连接起来。

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

例如:我有两个文件:文件aa和文件bb

aa的内容为:

joe 100

jane 200

herman 300

chris 400

bb的内容为:

joe 20

jane  10

herman 30

chris 98

 

 

每条记录都有两个字段:业务员的名字和销售量.

为了让join运行得到正确结果,输入文件必须先完成排序.

 

 

 编写下列脚本:

#!/bin/sh

#jointest.sh

#删除注释并排序数据文件

sed ‘/^#/d’ aa | sort > aa.sorted

sed ‘/^#/d’ bb | sort > bb.sorted

#以第一个键值做结合,将结果产生至标准输出

join aa.sorted bb.sorted

#删除缓存文件

rm aa.sorted bb.sorted

保存退出

chmod +x jointest.sh

./jointest.sh

输出结果如下所示:

chris 400 98

herman 300 30

jane 200 10

joe 100 20

首先使用sed删除注释,然后再排序个别文件.排序后的缓存缓存文件称为join命令的输入数据,最后删除缓存文件.sed的删除还记得吗?

sed ‘/^#/d’ bb

这里的意思是说把bb文件里以#开头的行删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值