cjoin1x <概要> cjoin1x : キーの値が同じレコードが複数存在するファイル同士を連結。 <書式> Usage : cjoin1x [+ng[<fd>]] key=<n> <master> <tran> Version : Mon Feb 4 10:53:34 JST 2019 Edition : 1 <説明> テキストファイル <tran> の "key=<n>" で指定したキーフィールドがマス ターファイル <master> の第1フィールド(キーフィールド)とマッチした 行のみを <tran> から抽出して、<master> の情報を連結して出力します。 連結は <tran> のキーフィールドの直後に <master> の内容を挿入する形で 行われます。 <master> の第1フィールドについては必ず昇順でソートされていることが 条件になります。 cjoin1 との違いは、<master> のキーフィールドの値が同一のレコードが複 数存在できる点です。<master> と <tran> のキーフィールド値が同一のレ コード同士を総掛けで連結して出力します。 <key>としては、 key=3 <tran> の第3フィールド key=3/5 <tran> の第3,4,5フィールド(<master> は第1,2,3フィールド) key=4@3 <tran> の第4,3フィールド(<master> は第2,1フィールド) key=NF <tran> の最終フィールド(<master> は第1フィールド) key=NF-3 <tran> の(最終-3)フィールド(<master> は第1フィールド) が指定できます。 マッチしない行は破棄しますが、+ng オプションを指定すると、ファイルデ スクリプタ <fd> へ出力します。<fd> を省略した場合は標準エラー出力へ 出力します。 <master> に "-" を指定すると標準入力から読み込みます。<tran> が無指 定、あるいは "-" を指定すると標準入力から読み込みます。<master> と <tran> の両方が標準入力の場合はエラーになります。 cjoin1x は <master> 全体をメモリーに読み込みますので、<master> が巨 大だとメモリー確保エラーが起きるので注意が必要です。 <例1> (マスター:master) $ cat master 1 東京 1 東京 2 大阪 2 大阪 (トランザクション:tran) $ cat tran 3 栄 2 京橋 3 金山 1 上野 1 新宿 4 天神 2 難波 3 熱田 2 梅田 4 博多 $ cjoin1x key=1 master tran > data $ cat data 2 大阪1 京橋 2 大阪2 京橋 1 東京1 上野 1 東京2 上野 1 東京1 新宿 1 東京2 新宿 2 大阪1 難波 2 大阪2 難波 2 大阪1 梅田 2 大阪2 梅田