shell join命令詳解(轉)

來源:互聯網
上載者:User

轉自http://www.cnblogs.com/mfryf/p/3402200.html

join命令
功能:“將兩個檔案裡指定欄位同樣的行串連起來”,即依照兩個檔案裡共有的某一列,將相應的行拼接成一行。
join [options] file1 file2
註:這兩個檔案必須在已經在此列上是依照同樣的規則進行了排序。
join選項
-a FILENUM:除了顯示匹配好的行另外將指定序號(1或2)檔案裡部匹配的行顯示出來
-e EMPTY:將須要顯示可是檔案裡不存在的域用此選項指定的字元取代
-i :忽略大寫和小寫
-j FIELD :等同於 -1 FIELD -2 FIELD,-j指定一個域作為匹配欄位
-o FORMAT:以指定格式輸出
-t CHAR :以指定字元作為輸入輸出的分隔字元
join 預設以空白字元做分隔字元(空格和\t),能夠使用 join -t $'\t'來指定使用tab做分隔字元
-v FILENUM:與-a相似 但值顯示檔案裡沒匹配上的行
-1 FIELD:以file1中FIELD欄位進行匹配
-2 FIELD:以file2中FIELD欄位進行匹配
--help :列印命令協助檔案
範例:
檔案 file1.txt
aa 1 2
bb 2 3
cc 4 6
dd 3 3
檔案file2.txt
aa 2 1
bb 8 2
ff 2 4
cc 4 4
dd 5 5

1.join file1.txt file2.txt
輸出:aa 1 2 2 1
bb 2 3 8 2
預設已兩個檔案的第一行做匹配欄位,預設以空格(不限個數)做分隔字元。
2.join -j 1 file1.txt file2.txt
輸出:aa 1 2 2 1
bb 2 3 8 9
-j選項 指定了以兩個檔案裡第一列做匹配欄位 等同於join file1.txt file2.txt
3. join -1 2 -2 3 file1.txt file2.txt
輸出: 1 aa 2 aa 2
2 bb 3 bb 8
4 cc 6 ff 2
4 cc 6 cc 4
以第一個檔案的第二列和第二個檔案的第三列做匹配欄位。因為第二個檔案裡第三列的兩個3 都與第一個檔案裡第三行因此輸出
4 cc 6 ff 2
4 cc 6 cc 4
4 join -o 1.1 -o 1.2 -o 1.3 -o 2.1 -o 2.2 -o 2.3 -e 'empty' -a 1 file1.txt file2.txt
輸出: aa 1 2 aa 2 1
bb 2 3 bb 8 2
cc 4 6 empty empty empty
dd 3 3 empty empty empty
-o 指定 將file1的1,2,3列,file2的1,2,3 列都輸出。-a指定將file1中不匹配的行也輸出,可是file2中沒有與file1後兩行相應的欄位,因此使用empty補齊。

5.join -v 1 file1.txt file2.txt
輸出: cc 4 6
dd 3 3
-v 1 將file1中不匹配的行輸出
PS:join命令和資料庫中的join命令很相似。
儘管file1和file2都已經排序,可是因為在第三行時開始不匹配因此僅僅匹配上了前兩行,後面的行儘管欄位也能夠相應可是以不能匹配。join命令,對檔案格式的要求很強,假設想要更靈活的使用,可用AWK命令,參加AWK執行個體

6. join 標準輸入
有時我們須要將多個格式同樣的檔案join到一起,而join接受的是兩個檔案的指令,此時我們能夠使用管道和字元“-"來實現
join file1 file2 | join - file3 | join - file4
這樣就能夠將四個檔案 串連到 一起了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.