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 京橋
Last modified: 2022-08-13 08:42:34