UNIX 指令 - join

【功能】

結合二個檔案,二者間須有共同的連結欄位

【語法】

join [options ] file1 file2

【說明】

可將二個檔案間互相對應的行連結在一起,連結欄位多是在每行的第一個欄位,且二檔案的欄位內容已依照 ASCII 的大小排序過(由小到大),若 file1 是 '-' 符號,則會從標準輸入讀取資料。

結合後的結果首先是印出連結欄位,後面是第一個檔案的其餘部份,再來是第二個檔案的其餘部份,若二檔間無共同的欄位則無結果輸出。

輸入時,檔案中的欄位是以空白(space)、跳格(tab)、或換行(new-line)等字元做為分隔符號,輸出時則以空白字元分隔各欄位。

【選項】

選 項 說 明
-an 在 filen 中若無可以互相對應的行時,也會印出該行。
-e s(empty) 用字串 s 取代空白的資料欄(由 -o 選項所產生的)。
-jn m(join) 使用filen 的第m 個欄位做為連結欄。若n 省略,則使用每個檔的第 m 個欄位,而欄位的編號是由左而右,從1開始計算。
-o list(output) 依據 list 的指定而將輸出結果重新編排,在 list 中可為多個 n.m 形式的項目,每一個項目間是以空白區隔。n 是指檔案編號,m 是欄位編號。連結欄除非有指定否則不會印出。
-tc 指定字元 c 做為輸入及輸出欄位間的分隔字元。

【範例】

檔案 school

anne chicago
bean duke
peter utah

檔案 score

anne 3.0 1680 540
bean 2.7 1710 530
peter 3.2 1960 600
simon 2.8 1660 510

1. 以連結欄結合二個檔案:

join school score

若無特別指定連結欄的位置,則預設為每行的第一個欄位。二檔有相同連結欄的有 anne、bean、peter 三行。

輸出的結果如下:

anne chicago 3.0 1680 540
bean duke 2.7 1710 530
peter utah 3.2 1960 600

2. 指定欄位的顯示:

join -o 1.2 2.4 school score

這個例子中,我們指定了第一個檔案 school 中的第二欄(1.2)及第二個檔案 score中的第四欄(2.4)為輸出結果。

chicago 540
duke 530
utah 600

網路電視    旅遊景點    算命    象棋殘局    回首頁