join 命令例解

在介绍命令之前,首先注意一点:

join命令要求两个文件,必须是已经排序的文件,排序详情请了解sort 命令

在linux 下join 命令 可以根据格式化文本中的一个字段,把两个文本合并。

举例 

文件A.txt

0 a

1 b

文件B.txt

0 c

1 d

2 e

我们希望以第一列为key 把两个文件合并成C.txt

0 a c

1 b d

这就是join命令要干的事,在应用中第一列经常是数据库中的主键,你希望根据主键把一个实体的各种信息合并成一个文件,同时由于数据库数据量巨大(几千万甚至过亿记录,否则应该直接读取数据库处理),不可能通过sql直接完成。

下面进入正题:

场景一: 你需要把两个文件按第一个字段合并,没有任何别的要求

join A.txt B.txt

默认情况下,join会把结果输出到标准输出(屏幕),如果你想把它存入文件就重定向吧

join A.txt B.txt >C.txt

合并结果如下:

0 a c

1 b d

B.txt中的第3行丢了,对就是这样的,默认情况下如果这个字段没有找到匹配项就会被丢弃。

场景二:你希望合并两个文件,把不存在的字段用0补齐

join -o 2.1 -o 1.2 -o 2.2 -e 0 -a 2 A.txt B.txt

合并结果:

0 a c
1 b d
2 0 e

解释:

-o ,规定输出字段,-o 2.1 代表第2个文件第一个字段,依次出现的-o 规定了,输出中的各字段及出现的顺序。

-a ,打印找不到匹配的行,-a2 代表打印第2个文件中找不到匹配的行,比如上面B.txt中的第3行

-e ,缺失字段替代符,如上A.txt中找不到字段为2的记录,用0进行补齐


其它选项:

-j :比较字段,默认用第1个字段 进行比较合并,可以用如 -j 2指定用第2个字段进行比较,同样的功能也可以如下实现

-1 2 -2 2 ,代表第一个文件第2个字段,第2个文件第2个字段,当然你也可以用第一个文件的第1个字段和第2个文件的第2个字段(-1 1 -2 2)比较,你懂的。。。

-i:不区分大小写

-t: 指定分隔符,







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值