[shell基礎]——join命令

Jelly_lyj發表於2017-03-18

測試文字內容

# 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

 

相關文章