Tukubaiオンラインコマンドマニュアル - join1x(1)
join1x(1)
【名前】
join1x
: キーの値が同じレコードが複数存在するファイル同士を連結。
【書式】
Usage : join1x [+ng[<fd>]] key=<n> <master> [<tran>] Version : Fri Jul 22 01:09:14 JST 2022
【説明】
テキストファイル<tran>
の"key=<n>"
で指定したキーフィールドがマスターファイル<master>
の第1フィールド(キーフィールド)とマッチした行のみを<tran>
から抽出して、<master>
の情報を連結して出力します。連結は<tran>
のキーフィールドの直後に<master>
の内容のうちキーフィールド以外を挿入する形で行われます。
複数のキーフィールドがある場合、<master>
のキーフィールドは、<tran>
のキーフィールドと同じ並びで、最小フィールドが1となるようスライドさせたキーフィールドとなります。例えば、key=3/5
のときは、並び=3フィールド連続したキー、なので、<master>
は1から3連続したフィールド、つまり、第1から第3フィールドがキーとなります。
masterまたはtranに-
を指定すると標準入力を使用する。tranが無指定の場合には標準入力を使用する。
<master>
の第1フィールドおよび<tran>
のキーフィールドについては必ず昇順でソートされていることが条件になります。
+ng
オプションをつけると、一致した行を標準出力ファイルへ、一致しなかった行をファイルディスクリプタ<fd>
のファイルへ出力する。<fd>
を省略した場合は標準エラー出力ファイルへ出力する。
join1
との違いは、マスターファイルのキーフィールドの値が同一のレコードが複数存在できる点です。マスターとトランザクションファイルのキーフィールド値が同一のレコード同士を総掛けで連結して出力します。
【例1】
(マスター:master)
$ cat master 1 東京1 1 東京2 2 大阪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 京橋