Tukubaiオンラインコマンドマニュアル
cjoin2(1)
【名前】
cjoin2 : トランザクションファイルにマスタファイルを連結(一致しなかった行はダミーデータへ置換)
【書式】
Usage : cjoin2 [-d<string>] [+<string>] key=<key> <master> <tran> Version : Fri Jul 27 21:03:24 JST 2012
【説明】
tranのkey=<n>で指定したキーフィールドがmasterの第1フィールド(キーフィールド)と一致した行をtranから抽出し、masterの情報を連結して出力する。一致しない行はダミーデータ*を連結して出力する。ダミーデータは-dオプションにて指定できる。
masterに-を指定すると標準入力をマスタファイルとする。tranが無指定かまたは-が指定されている場合には、標準入力がトランザクションファイルとなる。
masterの第1フィールドは必ず昇順で整列されていることが条件となる。さらに、masterについてはキーフィールド(第1フィールド)について、各行がユニークでなければならない(第1フィールドが同じ値をもつ行が複数あってはならない)。tranの第<n>フィールドは整列されていなくてもよく、同じ値を持つキーフィールド(第<n>フィールド)はいくつあっても構わない。
キーに選択するフィールドは複数指定することもできる。たとえばkey=3/5のように指定した場合、tranの第3、第4、第5フィールドを意味するようになる。またこの場合、masterのキーは第1、第2、第3フィールドとなる。いずれも、指定したkeyについてmasterもtranも整列されている必要がある。
tranのキーが整列済みであればcjoin2(1)ではなくjoin2(1)で処理できる。cjoin2(1)はtranのキーが整列されていないものも処理できるが、masterをすべてメモリに読み込むため、メモリ確保エラーが発生する可能性がある。cjoin2(1)はmasterが小さくtranが大容量な場合に効果的に使用できる。
【例1】基本パターン
$ cat master 0000003 杉山______ 26 F 0000005 崎村______ 50 F 0000007 梶川______ 42 F $
$ cat tran 0000005 82 79 16 21 80 0000001 46 39 8 5 21 0000004 58 71 20 10 6 0000009 60 89 33 18 6 0000003 30 50 71 36 30 0000007 50 2 33 15 62 $
$ cjoin2 key=1 master tran > ok $ cat ok 0000005 崎村______ 50 F 82 79 16 21 80 0000001 ********** ** * 46 39 8 5 21 0000004 ********** ** * 58 71 20 10 6 0000009 ********** ** * 60 89 33 18 6 0000003 杉山______ 26 F 30 50 71 36 30 0000007 梶川______ 42 F 50 2 33 15 62 $
【例2】+dオプションの使い方
$ cjoin2 -d@@ key=1 master tran > ok $ cat ok 0000005 崎村______ 50 F 82 79 16 21 80 0000001 @@ @@ @@ 46 39 8 5 21 0000004 @@ @@ @@ 58 71 20 10 6 0000009 @@ @@ @@ 60 89 33 18 6 0000003 杉山______ 26 F 30 50 71 36 30 0000007 梶川______ 42 F 50 2 33 15 62 $
【例3】標準入力の使い方
$ cat tran | cjoin2 +ng key=1 master $ cat tran | cjoin2 +ng key=1 master - $ cat master | cjoin2 +ng key=1 - tran
cjoin0(1)、cjoin1(1)、cjoin2(1)、join0(1)、join1(1)、loopj(1)、loopx(1)、up3(1)、マスタファイル(5)、トランザクションファイル(5)