功能說明:將兩個文件中,指定欄位內容相同的行連接起來。
語 法: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命令,就相當于數據庫中的內連接,關鍵字不匹配的行不會輸出。
[root@rhel55 linux]# cat month_cn.txt
一月
二月
三月
四月
五月
六月
七月
八月
九月
十月
十一月
十二月
十三月,故意的
[root@rhel55 linux]# cat month_en.txt
January
February
March
April
May
June
July
August
September
October
November
December
MonthUnknown
注:注意兩個文件的內容,中文版的多了十三月,英文版的多了14月,這純粹是為了方便演示。
[root@rhel55 linux]# join month_cn.txt month_en.txt
一月 January
二月 February
三月 March
四月 April
五月 May
六月 June
七月 July
八月 August
九月 September
十月 October
十一月 November
十二月 December
[root@rhel55 linux]#
示例二 左連接(又稱左外連接,顯示左邊所有記錄)
顯示左邊文件中的所有記錄,右邊文件中沒有匹配的顯示空白。
[root@rhel55 linux]# join -a1 month_cn.txt month_en.txt
一月 January
二月 February
三月 March
四月 April
五月 May
六月 June
七月 July
八月 August
九月 September
十月 October
十一月 November
十二月 December
十三月,故意的
[root@rhel55 linux]#
示例三 右連接(又稱右外連接,顯示右邊所有記錄)
顯示右邊文件中的所有記錄,左邊文件中沒有匹配的顯示空白。
[root@rhel55 linux]# join -a2 month_cn.txt month_en.txt
一月 January
二月 February
三月 March
四月 April
五月 May
六月 June
七月 July
八月 August
九月 September
十月 October
十一月 November
十二月 December
MonthUnknown
[root@rhel55 linux]#
示例四 全連接(又稱全外連接,顯示左邊和右邊所有記錄)
[root@rhel55 linux]# join -a1 -a2 month_cn.txt month_en.txt
一月 January
二月 February
三月 March
四月 April
五月 May
六月 June
七月 July
八月 August
九月 September
十月 October
十一月 November
十二月 December
十三月,故意的
MonthUnknown
[root@rhel55 linux]#
示例五 指定輸出字段
比如參數 -o 1.1 表示只輸出第一個文件的第一個字段。
[root@rhel55 linux]# join -o 1.1 month_cn.txt month_en.txt
2
4
6
8
10
12
[root@rhel55 linux]# join -o 1.1 2.2 month_cn.txt month_en.txt
January
February
March
April
May
June
July
August
September
October
November
December
[root@rhel55 linux]# join -o 1.1 2.2 1.2 month_cn.txt month_en.txt
January 一月
February 二月
March 三月
April 四月
May 五月
June 六月
July 七月
August 八月
September 九月
October 十月
November 十一月
December 十二月
[root@rhel55 linux]# join -o 1.1 2.2 1.2 1.3 month_cn.txt month_en.txt <== 字段1.3并不存在
January 一月
February 二月
March 三月
April 四月
May 五月
June 六月
July 七月
August 八月
September 九月
October 十月
November 十一月
December 十二月
[root@rhel55 linux]#
示例六 指定分隔符
[root@rhel55 linux]# join -t ':' /etc/passwd /etc/shadow
root:x:0:0:root:/root:/bin/bash:$1$K8WSIAfQ$9i1h6a4V1XeIn0lv.CT53/:14833:0:99999:7:::
bin:x:1:1:bin:/bin:/sbin/nologin::14833:0:99999:7:::
daemon:x:2:2:daemon:/sbin:/sbin/nologin::14833:0:99999:7:::
adm:x:3:4:adm:/var/adm:/sbin/nologin::14833:0:99999:7:::
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin::14833:0:99999:7:::
sync:x:5:0:sync:/sbin:/bin/sync::14833:0:99999:7:::
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown::14833:0:99999:7:::
halt:x:7:0:halt:/sbin:/sbin/halt::14833:0:99999:7:::
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin::14833:0:99999:7:::
news:x:9:13:news:/etc/news:::14833:0:99999:7:::
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin::14833:0:99999:7:::
operator:x:11:0:operator:/root:/sbin/nologin::14833:0:99999:7:::
games:x:12:100:games:/usr/games:/sbin/nologin::14833:0:99999:7:::
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin::14833:0:99999:7:::
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin::14833:0:99999:7:::
nobody:x:99:99:Nobody:/:/sbin/nologin:*:14833:0:99999:7:::
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin:!!:14833:0:99999:7:::
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin:!!:14833:0:99999:7:::
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin:!!:14833:0:99999:7:::
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin:!!:14833:0:99999:7:::
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin:!!:14833:0:99999:7:::
pcap:x:77:77::/var/arpwatch:/sbin/nologin:!!:14833:0:99999:7:::
ntp:x:38:38::/etc/ntp:/sbin/nologin:!!:14833:0:99999:7:::
dbus:x:81:81:System message bus:/:/sbin/nologin:!!:14833:0:99999:7:::
avahi:x:70:70:Avahi daemon:/:/sbin/nologin:!!:14833:0:99999:7:::
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin:!!:14833:0:99999:7:::
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin:!!:14833:0:99999:7:::
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin:!!:14833:0:99999:7:::
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin:!!:14833:0:99999:7:::
avahi-autoipd:x:100:101:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin:!!:14833:0:99999:7:::
oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin:!!:14833:0:99999:7:::
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin:!!:14833:0:99999:7:::
gdm:x:42:42::/var/gdm:/sbin/nologin:!!:14833:0:99999:7:::
sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin:!!:14833:0:99999:7:::
oracle:x:500:500::/opt/oracle:/bin/bash:$1$v64Pa.m.$GZMrQiOWCdQPF8XKtWju30:14833:0:99999:7:::
mysql:x:101:104:MySQL server:/var/lib/mysql:/bin/bash:!!:14866::::::