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