join2x <概要> join2x : キーの値が同じレコードが複数存在するファイル同士を連結。 <書式> Usage : join2x [+<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フィールドおよび <tran> の 第 <n> フィールドは必ず昇 順でソートされていることが条件になります。 join2 との違いは、<master> のキーフィールドの値が同一のレコードが複 数存在できる点です。<master> と <tran> のキーフィールド値が同一のレ コード同士を総掛けで連結して出力します。 <master> が空ファイル(0バイト)の場合はエラーになります。-f<n> が指 定されているとエラーにならず、<n> を <master> の非キーフィールドの個 数として扱います。 <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> の両方が標準入力の場合はエラーになります。 <例1> (マスターファイル:master) $ cat master 1 東京 1 東京 2 大阪 2 大阪 (トランザクションファイル:tran) $ cat tran 1 新宿 1 上野 2 梅田 2 難波 2 京橋 3 金山 3 栄 3 熱田 4 博多 4 天神 $ join2x key=1 master tran >data $ cat data 1 東京1 新宿 1 東京2 新宿 1 東京1 上野 1 東京2 上野 2 大阪1 梅田 2 大阪2 梅田 2 大阪1 難波 2 大阪2 難波 2 大阪1 京橋 2 大阪2 京橋 3 _ 金山 3 _ 栄 3 _ 熱田 4 _ 博多 4 _ 天神