Shell 学习10(join命令)

来源:互联网 发布:淘宝卖家回复语大全 编辑:程序博客网 时间:2024/05/18 00:01
join 命令


join命令用于实现两个文件中记录的连接操作,连接操作将两个文件中具有相同域的记录选择出来,再将这些记录所有的域放到一行(包含来自两个文件的所有域) 和数据苦的差不多 只不过来自两个文件 


join [选项] 文件1 文件2

1 也是按照分域和记录来操作  默认空格
2 当两个文件进行连接时,文件1中的记录可能在文件2中找不到共同域,反过来,文件2中也可能存在这样的记录,join命令的结果默认是不显示这些未进行连接的记录的


-a和-v选项就是用于显示这些未进行连接的记录,-a1和-v1指显示文件1中的未连接记录,而-a2和-v2指显示文件2中的未连接记录
-a和-v选项的区别在于:-a选项显示以共同域进行连接的结果,而-v选项则不显示这些记录 
-t  按照什么作为分割符

eg 

 cat TEACHER.db 
结果
B Liu:Shanghai Jiaotong University:Shanghai:China 
C Lin:University of Toronto:Toronto:Canada 
D Hou:Beijing University:Beijing:China 
J Luo:Southeast University:Nanjing:China 
Y Zhang:Victory University:Melbourne:Australia 

cat TEACHER_HOBBY.db 
结果:
B Liu:Tea 
C Lin:Song 
J Cao:Pingpong 
Q Cai:Shopping 
Y Zhang:Photograhy 
Z Wu:Chess 

 join -t: TEACHER.db TEACHER_HOBBY.db (默认是第一个域
结果
B Liu:Shanghai Jiaotong University:Shanghai:China:Tea 
C Lin:University of Toronto:Toronto:Canada:Song 
Y Zhang:Victory University:Melbourne:Australia:Photograhy 

join -t: -a1 TEACHER.db TEACHER_HOBBY.db (将文件1中的所有都列出来!
结果
B Liu:Shanghai Jiaotong University:Shanghai:China:Tea 
C Lin:University of Toronto:Toronto:Canada:Song 
D Hou:Beijing University:Beijing:China 
J Luo:Southeast University:Nanjing:China 
Y Zhang:Victory University:Melbourne:Australia:Photograhy 
ming@ming-F83VF:~/shellpractice/sort$ join -t: -a2 TEACHER.db TEACHER_HOBBY.db 


-a2就不试了  学过数据库左右链接的人都知道怎么个事


join命令默认显示连接记录在两个文件中的所有域,而且是按顺序来显示的。-o选项用于改变结果显示的格式 


eg

要是显示第一文件第一域 第二文第一域 第一文件第二域
join -t: -o1.1 2.1 1.2 TEACHER.db TEACHER_HOBBY.db

join命令默认比较文件1和文件2的第1域,如果我们需要通过其他域进行连接,就需要使用-1和-2选项,-1用于设置文件1用于连接的域,-2用于设置文件2用于连接的域 
文件1和文件2必须已经根据所要进行连接的域排序 


join -t: -i -1 3 -2 1 TEACHER1.db AREACODE.db 
-i 忽略大小写  -1 3 第一个文件的第三个域
-2 1 第一个文件的第一个域
原创粉丝点击