Linux join命令使用详解
join命令 用来将两个文件中,制定栏位内容相同的行连接起来。找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。
注意:join在对两个文件进行连接时,两个文件必须都是按照连接域排好序的,按其他域排序是无效的。
语法
1 | join(选项)(参数) |
选项
1 | -a<1或2>:除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行; |
参数
- 文件1:要进行合并操作的第1个文件参数;
- 文件2:要进行合并操作的第2个文件参数。
实例
将两个文件的具有共同域的纪录连接在一起:
[root@locahost ~]# cat file.db
A li:20:men:anhui
B wang:21:women:jiangsu
C zhang:22:men:anhui
D liu:23:women:Shanghai
E chen:23:women:Hefei
[root@locahost ~]# cat file_hobby.db
A li:Song
B wang:shopping
C zhang:pingpong
D liu:chess
E Wang:reading
[root@locahost ~]# join -t: file.db file_hobby.db
A li:20:men:anhui:Song
B wang:21:women:jiangsu:shopping
C zhang:22:men:anhui:pingpong
D liu:23:women:Shanghai:chess
-a1还显示第一个文件中没有共同域的纪录,-a2则显示第二个:
[root@locahost ~]# join -t: -a1 file.db file_hobby.db
A li:20:men:anhui:Song
B wang:21:women:jiangsu:shopping
C zhang:22:men:anhui:pingpong
D liu:23:women:Shanghai:chess
E chen:23:women:Hefei
[root@locahost ~]# join -t: -a2 file.db file_hobby.db
A li:20:men:anhui:Song
B wang:21:women:jiangsu:shopping
C zhang:22:men:anhui:pingpong
D liu:23:women:Shanghai:chess
E Wang:reading
设置指定格式的域来显示出来(将具有共同纪录的域按照姓名+性别+爱好的格式显示出来):
[root@locahost ~]# join -t: -o1.1 1.3 2.2 file.db file_hobby.db
A li:men:Song
B wang:women:shopping
C zhang:men:pingpong
D liu:women:chess