cjoin2x <概要> cjoin2x : キーの値が同じレコードが複数存在するファイル同士を連結。 <書式> Usage : cjoin2x [+<string>] [-f<n>] key=<n> <master> <tran> Version : Mon Feb 4 10:53:34 JST 2019 Edition : 1 <説明> テキストファイル <tran> の "key=<n>" で指定したキーフィールドがマス ターファイル <master> の第1フィールド(キーフィールド)とマッチした 行を <tran> から抽出して、<master> の情報を連結して出力します。マッ しない行は、ダミーデータ "_" をフィールド数分だけ結合して出力します。 ダミーデータは指定することもできます。 <master> の第1フィールドについては必ず昇順でソートされていることが 条件になります。 cjoin2 との違いは、<master> のキーフィールドの値が同一のレコードが複 数存在できる点です。<master> と <tran> のキーフィールド値が同一のレ コード同士を総掛けで連結して出力します。 <master> が空ファイル(0バイト)の場合はエラーになります。 <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フィールド) が指定できます。 <master> に "-" を指定すると標準入力から読み込みます。<tran> が無指 定、あるいは "-" を指定すると標準入力から読み込みます。<master> と <tran> の両方が標準入力の場合はエラーになります。 cjoin2x は <master> 全体をメモリーに読み込みますので、<master> が巨 大だとメモリー確保エラーが起きるので注意が必要です。 <例1> (マスターファイル:master) $ cat master 1 東京 1 東京 2 大阪 2 大阪 (トランザクションファイル:tran) $ cat tran 3 栄 2 京橋 3 金山 1 上野 1 新宿 4 天神 2 難波 3 熱田 2 梅田 4 博多 $ cjoin2x key=1 master tran >data $ cat data 3 _ 栄 2 大阪1 京橋 2 大阪2 京橋 3 _ 金山 1 東京1 上野 1 東京2 上野 1 東京1 新宿 1 東京2 新宿 4 _ 天神 2 大阪1 難波 2 大阪2 難波 3 _ 熱田 2 大阪1 梅田 2 大阪2 梅田 4 _ 博多