連線兩個檔案的資料字段 join命令

2021-08-25 10:13:02 字數 3784 閱讀 2586

連線兩個檔案的資料字段。

join [ -a

filenumber| -v

filenumber] [ -e

string] [ -o

list] [ -t

character] [ -1

field][ -2

field]file1file2

join 命令讀取由 file1 和 file2 引數指定的檔案,根據標誌連線檔案中的行,並且把結果寫到標準輸出中。file1 和 file2 引數必須為文字檔案。file1 和 file2 都必須以 -b 欄位的整理順序排序,它們將按照此字段在呼叫 join 命令之前連線。

對於出現在兩個檔案中的每乙個相同連線字段,在輸出中只出現一行。連線欄位是在輸入檔案中由 join 命令來確定包含在輸出檔案中的字段。輸出行包含連線字段、file1 引數指定的檔案的其餘行和由 file2 引數指定的檔案的其餘行。通過用 - (劃線)代替檔名,來指定標準輸入來代替 file1 或者 file2 引數。 兩個輸入檔案都不能帶 - (劃線)來指定。

字段通常由乙個空格、乙個製表符或換行符來分割。這樣,join 命令把連續的分隔符作為乙個並廢棄前導分隔符。

-1field

用由 file1 輸入檔案中的 field 變數指定的字段來連線兩個檔案。field 變數的值必須為乙個正的十進位制整數。

-2field

用由 file2 輸入檔案中的 field 變數指定的字段來連線兩個檔案。field 變數的值必須為乙個正的十進位制整數。

-afilenumber

給由 filenumber 變數指定的檔案的每一行產生乙個輸出行,此變數的連線欄位和其它的輸入檔案中的任何一行都不匹配。產生輸出行,除了預設輸出之外。filenumber 變數的值必須為 1 或 2,各自相應於由file1 和 file2 引數指定的檔案。如果這個標誌和 -v 標誌一起指定,則忽略該標誌。

-estring

用 string 變數指定的字串來代替空輸出字段。

-olist

構造乙個輸出行來包含由 list 變數指定的字段。適用於 list 變數的以下格式之一:

filenumber.field

其中 filenumber 是乙個檔案號,

field 是乙個十進位制整數欄位號。用

, (逗號)或空格字元來分割多個字段,並且前後用引號括起來。

0(零)

表示連線字段。

-o0 標誌本質上是選擇連線欄位的聯合。

-tcharacter

用由 character 引數指定的字元作為輸入和輸出的字段分隔符。在行上出現的每乙個字元都是有效數字。預設的分隔符是乙個空格。有了預設字段分割符,整理順序是 sort -b

命令的結果。如果指定了 -t,順序是乙個簡單的排序。指定了乙個製表符,把它包括在單引號中。

-vfilenumber

為由 filenumber 變數指定的檔案的每一行產生乙個輸出行,此變數的連線欄位和其他的輸入檔案的任何一行都不匹配。預設輸出是不產生。filenumber 變數的值必須為 1 或 2,各自相應於由 file1 和 file2 引數指定的檔案。如果此標誌和 -a 標誌一起指定,則忽略 -a 標誌。

此命令返回下列退出值:

0成功完成。

>0

發生乙個錯誤。

注:下面示例中顯示的垂直對齊的值或許會和您的輸出不一致。

要在第乙個字段相同的兩個檔案中執行乙個簡單的連線操作,請輸入:

joinphonedirnames
如果 phonedir 檔案包含以下名稱:

adams a.555-6235

dickerson b.555-1842

erwin g.555-1234

jackson j.

並且 names 檔案包含這些名字和部門號:

erwin dept.389

frost dept.217

nicholson dept.311

norwood dept.454

wrightdept.520

xandy dept.999

join 命令顯示:

erwing.555-1234dept.389

norwoodm.555-5341dept.454

wrightm. 555-1234dept.520

xandyg.555-5015dept.999

每一行包含了連線字段(最後乙個名字),後面跟著在 phonedir 檔案和 names 檔案中找到的其餘幾行。

要用 join 命令顯示不匹配的行,請輸入:

join -a1phonedirnames

如果phonedir和 name 檔案是和示例 1 相同的,join 命令顯示:

erwing.555-1234 dept.389

frostdept.217

nicholsondept.311

norwoodm.555-5341 dept.454

wrightm. 555-1234 dept.520

xandyg.555-5015 dept.999

此命令執行了和示例 1 中相同的連線操作,並且列出了在 phonedir 檔案中行名字不匹配的行。名字 frost 和 nicholson 包括在列表中,即使它們在 phonedir 檔案中沒有項。

要用 join 命令來顯示選擇的字段,請輸入:

join -o2.3,2.1,1.2,1.3phonedirnames

按照所給出的順序顯示下列字段:

names 的字段 3

部門號names 的字段 1

姓phonedir 的字段 2

名字第乙個字母

phonedir 的字段 3

**號碼

如果phonedir 檔案和 names 檔案與示例 1 中的相同,則 join 命令顯示:

389erwing.555-1234

454norwoodm.555-5341

520wrightm. 555-1234

999xandyg.555-5015

要執行乙個非第乙個欄位的連線操作,請輸入:

sort+2-3phonedir|join-1 3-numbers

這個命令把 phonedir 和 numbers 檔案中的行連線起來,通過比較 phonedir 檔案的第三個欄位和 numbers 檔案的第乙個字段。 第一,這個命令通過第三個欄位來排序 phonedir 檔案,因為檔案必須通過它們的連線欄位來排序。然後 sort 命令的輸出傳送給 join 命令。-(劃線)自己使 join 命令把此輸出作為自己的第乙個檔案。-13 標誌把已排序的 phonedir 檔案的第三個字段作為連線字段。 這與 numbers 的第乙個欄位做比較,因為它的連線字段沒有指定用 -2 標誌。

如果numbers 檔案包含:

555-0256

555-1234

555-5555

555-7358

然後此命令顯示了列在 phonedir 檔案的名字或每個**號碼:

555-0256jacksonj.

555-1234erwing.

555-1234wrightm.

注意 join 命令命令列出了所給定的字段中的匹配項。在這種情況下,join 命令列出了 erwin g. 和 wright m.,因為有**號碼 555-1234。號碼 555-5555 沒有列出來,因為它沒有出現在 phonedir 檔案中。

/usr/bin/join

包含 join 命令。

/usr/lib/nls/loc/*.src

包含整理資訊。

連線兩個點雲的字段或資料形成新點雲

學習如何連線兩個不同點雲為乙個點雲,進行操作前要確保兩個資料集中欄位的型別相同和維度相等,同時了解如何連線兩個不同點雲的字段 例如顏色 法線 這種操作的強制約束條件是兩個資料集中點的數目必須一樣,例如 點雲a是n個點xyz點,點雲b是n個點的rgb點,則連線兩個字段形成點雲c是n個點xyzrgb型別...

Spring連線兩個以上的資料庫

通過spring的配置,新增多個資料來源,製作多個qlmapclient,ibatis或hibernate的各個dao,按其所需使用不同的qlmapclient,即可連線到多個db。用途嗎,同時使用oracle sqlserver db2 mysql,這樣的可能似乎不大。但是對於要從其他系統讀取資料...

練習join(連線兩個陣列),隨機數組的練習

自定義方法實現 對任意兩個陣列,連線為乙個陣列之後,然後再連線為乙個字串,返回。function join arr1,arr2 return arr1.join var arr1 1 2,3 var arr2 4 5,6 console.log join arr1,arr2 script 1 得到乙...