shell编程——基本文本处理(七)之使用join命令联接文本

1    基本用法

join命令用来联接这些文本文件中的数据行,根据参与联接的两个文本的公共列来联接数据行。基本语法:

join [option]... file1 file2

-1 field:根据第1个文件的指定列进行联接。其中参数field用来指定第1个文件中用来联接的关键字列。

-2 field:根据第2个文件的指定列进行联接。其中参数field用来指定第2个文件中用来联接的关键字列。

join -1 1 -2 2 students.txt scores.txt > studentsscores.txt

指定students.txt的第1列和scores.txt的第2列作为关键字

join students.txt scores.txt > studentsscores.txt

在默认情况下,join命令会将两个文件的第1列作为关键字列进行比较。

join命令在比较关键字时会区分大小写,但是用户可以通过指定-i选项来忽略大小写的区分。

2    内联接文本文件

默认情况下,join命令只输出关键字匹配的文本行,而忽略关键字不匹配的文本行。只有关键字匹配的文本行才会出现在结果中。

3    左联接文本文件

所谓左联接,是指在联接结果中输出左边文件的所有行,即使在右边的文件中没有匹配的行。在左联接中,对于在右边的文件中没有相应关键字的行,由右边文件中所形成的列用空白符填充。

join -a 1 file1 file2   //  实现左联接

join -a 1 students.txt phones.txt > contaction.txt

左联接文件

4    右联接文件

join -a 2 students.txt phones.txt > contaction.txt

5    全联接文本文件

所谓全联接,是指除了显示两个文件中关键字匹配成功的行之外,还包括前后两个文件中中所有不匹配的行。

join -a 1 -a 2 file1 file2


join -a 1 -a 2 students.txt phones.txt > contaction.txt

注:在进行全联接时,不能写在一个-a选项中。

6    自定义输出列

在默认情况下,join命令会输出参与联接的两个文件中的所有列,但是在某些情况下,可以使用-o选项来指定要输出的列的清单。-o选项可以接受一个字段的列表:

filenum.filed   代表某个文件的第几列,如果同时指定了多个列,则多个列之间用空格隔开。

另外,用户可以直接为-o选项指定参数值0,表示仅仅输出关键字列。

join -1 1 -2 2 -o 1.1 1.2 2.3 students.txt phones.txt > contaction.txt

联接文件,并指定输出的列包括第一个文件的1 2列和第二个文件的第3列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值