join 命令
join命令用于实现两个文件中记录的连接操作,连接操作将两个文件中具有相同域的记录选择出来,再将这些记录所有的域放到一行(包含来自两个文件的所有域) 和数据苦的差不多 只不过来自两个文件
2 当两个文件进行连接时,文件1中的记录可能在文件2中找不到共同域,反过来,文件2中也可能存在这样的记录,join命令的结果默认是不显示这些未进行连接的记录的
-a和-v选项就是用于显示这些未进行连接的记录,-a1和-v1指显示文件1中的未连接记录,而-a2和-v2指显示文件2中的未连接记录
-a和-v选项的区别在于:-a选项显示以共同域进行连接的结果,而-v选项则不显示这些记录
-t 按照什么作为分割符
结果
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选项用于改变结果显示的格式
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 第一个文件的第一个域
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 第一个文件的第一个域