ljoin1

提供: Personal Tukubai for Academic
2021年8月19日 (木) 19:00時点におけるPt4a editor (トーク | 投稿記録)による版 (Batch Update)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

名前

ljoin1 : 最長前方一致によるジョイン

書式

使い方とオプション

Usage

ljoin1 key=<n> <master> <tran>

Option

+ng[<fd>]

説明

テキストファイル <tran> の “key=<n>” で指定したキーフィールドがマスターファイル <master> の第1フィールド(キーフィールド)とマッチした行のみを <tran> から抽出して、<master> を連結して出力します。

キーフィールドのマッチは前方一致で行われます。つまり、<tran> のキーが <master> のキーより長い場合、<tran> のキーを <master> のキーの長さに切り詰めた文字列とマッチを行います。複数のキーにマッチする場合、最も長いキーとマッチします。

連結は以下のフィールドを並べた形で行われます。

1. <tran> のキーフィールド以前
2. <master> のキーフィールド
3. <tran> のキーフィールド
4. <master> のキーフィールド以降
5. <tran>  のキーフィールド以降

<master> のキーフィールドは必ず昇順にソートされていることが条件になります。更にキーフィールドはユニークでなければなりません。(同じ値のキーフィールドを持つコードが複数あってはなりません)

<tran> のキーフィールドも必ず昇順にソートされていることが条件になります。ただし、同じ値を持つレコードが有っても構いません。

マッチしない行は破棄しますが、+ng オプションを指定すると、ファイルデスクリプタ <fd> へ出力します。<fd> を省略した場合は標準エラー出力へ出力します。

<master> に “-” を指定すると標準入力から読み込みます。<tran> が無指定、あるいは “-” を指定すると標準入力から読み込みます。<master> と<tran> の両方が標準入力の場合はエラーになります。

例(その1)

(マスター)

$ cat master
兵庫県 boke
兵庫県加古川市 boke2
兵庫県加古川市米田町 boke3
東京都 aho
東京都港区 aho2
東京都港区六本木 aho3

(トランザクション)

$ cat tran
A 兵庫県加古川 B
C 愛媛県 D
E 東京都港区六 F

$ ljoin1 +ng3 key=2 master trans > ok 3> ng
$ cat ok
A 兵庫県 兵庫県加古川 boke B
E 東京都港区 東京都港区六 aho2 F
$ cat ng
C 愛媛県 D

Version and Edition

Thu Jan 14 11:01:02 JST 2021

Edition : 1


© 2021 Universal Shell Programming Laboratory site