Tukubaiオンラインコマンドマニュアル - cjoin0(1)
cjoin0(1)
【名前】
cjoin0
: マスタファイルにキーフィールドが一致するトランザクションファイルの行を抽出
【書式】
Usage : cjoin0 [+ng[<fd>]] key=<n> <master> [<tran>] Version : Mon Sep 19 22:56:05 JST 2022 Edition : 1
【説明】
tranのkey=<n>
で指定したキーフィールドがmasterの第1フィールド(キーフィールド)と一致した行のみtranから抽出して出力する。
masterに-
を指定すると標準入力をマスタファイルとする。tranが無指定かまたは-
が指定されている場合には、標準入力がトランザクションファイルとなる。
masterの第1フィールドとtranの第<n>
フィールドは整列されていなくてもよく、キーフィールドに同じ値を持つレコードはいくつあっても構わない。
キーに選択するフィールドは複数指定することもできる。たとえばkey=3/5
のように指定した場合、tranの第3、第4、第5フィールドを意味するようになる。またこの場合、masterのキーは第1、第2、第3フィールドとなる。key=3@5
とすると第3、第5フィールドを意味する。行のフィールド数を意味するNF
を使用してNF
またはNF-x
の形でフィールド位置を指定することができる
キー指定にひとつでも0があると全フィールドを指定したことになる
+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)