[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