找出兩個檔案中,指定欄位內容相同的行,並加以合并,再輸出到標準輸出裝置。
文法
join [-i][-a<1或2>][-e<字串>][-o<格式>][-t<字元>][-v<1或2>][-1<欄位>][-2<欄位>]
[--help][--version][檔案1][檔案2]
參數:
- -a<1或2> 除了顯示原來的輸出內容之外,還顯示指令檔案中沒有相同欄位的行。
- -e<字串> 若[檔案1]與[檔案2]中找不到指定的欄位,則在輸出中填入選項中的字串。
- -i或--igore-case 比較欄位內容時,忽略大小寫差異。
- -o<格式> 按照指定的格式來顯示結果。
- -t<字元> 使用欄位的分隔字元。
- -v<1或2> 跟-a相同,但是只顯示檔案中沒有相同欄位的行。
- -1<欄位> 串連[檔案1]指定的欄位。
- -2<欄位> 串連[檔案2]指定的欄位。
- --help 顯示協助。
- --version 顯示版本資訊。
執行個體
串連兩個檔案。
為了清楚地瞭解join命令,首先通過cat命令顯示檔案testfile_1和 testfile_2 的內容。
然後以預設的方式比較兩個檔案,將兩個檔案中指定欄位的內容相同的行串連起來,在終端中輸入命令:
join testfile_1 testfile_2
首先查看testfile_1、testfile_2 中的檔案內容:
$ cat testfile_1 #testfile_1檔案中的內容
Hello 95 #例如,本例中第一列為姓名,第二列為數額
Linux 85
test 30
cmd@hdd-desktop:~$ cat testfile_2 #testfile_2檔案中的內容
Hello 2005 #例如,本例中第一列為姓名,第二列為年份
Linux 2009
test 2006
然後使用join命令,將兩個檔案串連,結果如下:
$ join testfile_1 testfile_2 #串連testfile_1、testfile_2中的內容
Hello 95 2005 #串連後顯示的內容
Linux 85 2009
test 30 2006
檔案1與檔案2的位置對輸出到標準輸出的結果是有影響的。例如將命令中的兩個檔案互換,即輸入如下命令:
join testfile_2 testfile_1
最終在標準輸出的輸出結果將發生變化,如下所示:
$ join testfile_2 testfile_1 #改變檔案順序串連兩個檔案
Hello 2005 95 #串連後顯示的內容
Linux 2009 85
test 2006 30