Tukubaiオンラインコマンドマニュアル

cjoin0(1)

【名前】

cjoin0 : マスタファイルにキーフィールドが一致するトランザクションファイルの行を抽出

【書式】

Usage	: cjoin0 [+ng[<fd>]] key=<n> <master> <tran>
Version	: Fri Jul 27 20:09:40 JST 2012

【説明】

tranのkey=<n>で指定したキーフィールドがmasterの第1フィールド(キーフィールド)と一致した行のみtranから抽出して出力する。

masterに-を指定すると標準入力をマスタファイルとする。tranが無指定かまたは-が指定されている場合には、標準入力がトランザクションファイルとなる。

masterの第1フィールドは必ず昇順で整列されていることが条件となる。さらに、masterについてはキーフィールド(第1フィールド)について、各行がユニークでなければならない(第1フィールドが同じ値をもつ行が複数あってはならない)。tranの第<n>フィールドは整列されていなくてもよく、同じ値を持つキーフィールド(第<n>フィールド)はいくつあっても構わない。

キーに選択するフィールドは複数指定することもできる。たとえばkey=3/5のように指定した場合、tranの第3、第4、第5フィールドを意味するようになる。またこの場合、masterのキーは第1、第2、第3フィールドとなる。いずれも、指定したkeyについてmastertranも整列されている必要がある。

+ng オプションをつけると、一致した行を標準出力ファイルへ、一致しなかった行をファイルデスクリプタ<fd>のファイルへ出力する。<fd>を省略した場合は標準エラー出力ファイルへ出力する。

tranのキーが整列済みであればcjoin0(1)ではなくjoin0(1)で処理できる。cjoin0(1)はtranのキーが整列されていないものも処理できるが、masterをすべてメモリに読み込むため、メモリ確保エラーが発生する可能性がある。cjoin0(1)はmasterが小さくtranが大容量な場合に効果的に使用できる。

【例1】基本パターン

成績ファイルkekkaからmasterに登録されている4人のデータを抽出する。

$ cat master
0000003 杉山______ 26 F
0000005 崎村______ 50 F
0000007 梶川______ 42 F
$ 
$ cat kekka
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
$ 

kekkaの第1フィールドがmasterファイルに存在する行のみ抽出する。

$ cjoin0 key=1 master kekka
0000005 82 79 16 21 80
0000003 30 50 71 36 30
0000007 50 2  33 15 62
$ 

【例2】+ngオプションの使い方

$ cjoin0 +ng key=1 master kekka > ok 2> ng
$ cat ng
0000001 46 39 8  5  21
0000004 58 71 20 10 6
0000009 60 89 33 18 6
$ 

【例3】標準入力の使い方

$ cat kekka | cjoin0 +ng key=1 master > ok 2> ng
$ cat kekka | cjoin0 +ng key=1 master - > ok 2> ng
$ cat master | cjoin0 +ng key=1 - tran > ok 2> ng

【関連項目】

cjoin0(1)cjoin1(1)cjoin2(1)join1(1)join2(1)loopj(1)loopx(1)up3(1)マスタファイル(5)トランザクションファイル(5)

last modified: 2014-01-13 16:01:13