Linux join命令
Linux join命令用於將兩個文件中,指定欄位內容相同的行連接起來。
找出兩個文件中,指定欄位內容相同的行,並加以合併,再輸出到標準輸出設備。
語法
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