[shell基础]——join命令

测试文本内容

# cat -n name1.txt 
     1	name1 alvin1
     2	name2 alvin2
     3	name3 alvin3
     4	name4 alvin4
# cat -n name2.txt 
     1	name1 100
     2	name2 101
     3	name3 102
     4	cccccccccccccccc

(1) join

显示匹配的行,并将值合并(ccc和name4不匹配所以不显示)
# join name1.txt name2.txt
name1 alvin1 100
name2 alvin2 101
name3 alvin3 102


(2) -a

用第1个文件的内容去匹配,若匹配则显示匹配的行,并合并其值;不匹配的行也显示,但其值为空
# join -a1 name1.txt name2.txt
name1 alvin1 100
name2 alvin2 101
name3 alvin3 102
name4 alvin4
用第2个文件的内容去匹配,若匹配则显示匹配的行,并合并其值;不匹配的行也显示,但其值为空
# join -a2 name1.txt name2.txt
name1 alvin1 100
name2 alvin2 101
name3 alvin3 102
cccccccccccccccc
两个文件同时匹配,若匹配则显示匹配的行,并合并其值;同时将所有不匹配的行也都显示出来
# join -a1 name1.txt -a2 name2.txt
name1 alvin1 100
name2 alvin2 101
name3 alvin3 102
cccccccccccccccc
name4 alvin4

 
(3) -o

对于匹配的行,输出"第1个文件的第2部分,第2个文件的第2部分"的部分,
# join -o 1.2 2.2 name1.txt name2.txt
alvin1 100
alvin2 101
alvin3 102
# join -o 1.1 2.1 name1.txt name2.txt
name1 name1
name2 name2
name3 name3
原文地址:https://www.cnblogs.com/snsdzjlz320/p/5693954.html