基礎命令學習目錄首頁html
原文連接:https://www.cnblogs.com/agilework/archive/2012/04/18/2454877.htmlmysql
功能說明:將兩個文件中,指定欄位內容相同的行鏈接起來。 語 法: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 顯示版本信息。
指定輸出字段: -o <FILENO.FIELDNO> ... 其中FILENO=1表示第一個文件,FILENO=2表示第二個文件,FIELDNO表示字段序號,從1開始編號。默認會所有輸出,但關鍵字列只輸出一次。 好比:-o 1.1 1.2 2.2 表示輸出第一個文件的第一個字段、第二個字段,第二個文件的第二個字段。
使用示例 示例一 內鏈接(忽略不匹配的行) 不指定任何參數的狀況下使用join命令,就至關於數據庫中的內鏈接,關鍵字不匹配的行不會輸出。 [root@rhel55 linux]# cat month_cn.txt 1 一月 2 二月 3 三月 4 四月 5 五月 6 六月 7 七月 8 八月 9 九月 10 十月 11 十一月 12 十二月 13 十三月,故意的 [root@rhel55 linux]# cat month_en.txt 1 January 2 February 3 March 4 April 5 May 6 June 7 July 8 August 9 September 10 October 11 November 12 December 14 MonthUnknown 注:注意兩個文件的內容,中文版的多了十三月,英文版的多了14月,這純粹是爲了方便演示。 [root@rhel55 linux]# join month_cn.txt month_en.txt 1 一月 January 2 二月 February 3 三月 March 4 四月 April 5 五月 May 6 六月 June 7 七月 July 8 八月 August 9 九月 September 10 十月 October 11 十一月 November 12 十二月 December [root@rhel55 linux]# 示例二 左鏈接(又稱左外鏈接,顯示左邊全部記錄) 顯示左邊文件中的全部記錄,右邊文件中沒有匹配的顯示空白。 [root@rhel55 linux]# join -a1 month_cn.txt month_en.txt 1 一月 January 2 二月 February 3 三月 March 4 四月 April 5 五月 May 6 六月 June 7 七月 July 8 八月 August 9 九月 September 10 十月 October 11 十一月 November 12 十二月 December 13 十三月,故意的 [root@rhel55 linux]# 示例三 右鏈接(又稱右外鏈接,顯示右邊全部記錄) 顯示右邊文件中的全部記錄,左邊文件中沒有匹配的顯示空白。 [root@rhel55 linux]# join -a2 month_cn.txt month_en.txt 1 一月 January 2 二月 February 3 三月 March 4 四月 April 5 五月 May 6 六月 June 7 七月 July 8 八月 August 9 九月 September 10 十月 October 11 十一月 November 12 十二月 December 14 MonthUnknown [root@rhel55 linux]# 示例四 全鏈接(又稱全外鏈接,顯示左邊和右邊全部記錄) [root@rhel55 linux]# join -a1 -a2 month_cn.txt month_en.txt 1 一月 January 2 二月 February 3 三月 March 4 四月 April 5 五月 May 6 六月 June 7 七月 July 8 八月 August 9 九月 September 10 十月 October 11 十一月 November 12 十二月 December 13 十三月,故意的 14 MonthUnknown [root@rhel55 linux]# 示例五 指定輸出字段 好比參數 -o 1.1 表示只輸出第一個文件的第一個字段。 [root@rhel55 linux]# join -o 1.1 month_cn.txt month_en.txt 1 2 3 4 5 6 7 8 9 10 11 12 [root@rhel55 linux]# join -o 1.1 2.2 month_cn.txt month_en.txt 1 January 2 February 3 March 4 April 5 May 6 June 7 July 8 August 9 September 10 October 11 November 12 December [root@rhel55 linux]# join -o 1.1 2.2 1.2 month_cn.txt month_en.txt 1 January 一月 2 February 二月 3 March 三月 4 April 四月 5 May 五月 6 June 六月 7 July 七月 8 August 八月 9 September 九月 10 October 十月 11 November 十一月 12 December 十二月 [root@rhel55 linux]# join -o 1.1 2.2 1.2 1.3 month_cn.txt month_en.txt <== 字段1.3並不存在 1 January 一月 2 February 二月 3 March 三月 4 April 四月 5 May 五月 6 June 六月 7 July 七月 8 August 八月 9 September 九月 10 October 十月 11 November 十一月 12 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::::::