(動画教材準備中)
upl : 二つのファイルを同一キーフィールドでマージして
キーフィールドの値が同一の最終行を抽出する。
Usage : up3 key=<key> <master> <tran>
Options : -e
-s<c>
Version : Wed Mar 7 13:53:56 JST 2018
Edition : 3
引数のファイル又は標準入力のトランザクションファイル <tran> の各引数のファイル又は標準入力のテキストデータ "tran" の各レコードを、"key="で指定したフィールドの値をマスターファイル "master" の同一キーフィールドの値と比較し、値が同じ "master" ファイルのレコードの下に挿入・マージを行なった後、キーフィールドが同一の値のレコードのうち最終のレコードを抽出します。
<master> <tran> とも、キーとなるフィールドはソートされている必要があります。
※ up3 + getlast と同じ働きをします。
(マスター:master)
a店 103 62
b店 157 94
c店 62 30
d店 210 113
e店 237 121(トランザクション:tran)
a店 131 84
c店 198 105
e店 81 48$ upl key=1 master tran > data
(data) <- tranをマージして同一店の最終行を抽出
a店 131 84
b店 157 94
c店 198 105
d店 210 113
e店 81 48複数のキーフィールドを指定する場合は、"key=2@1" の様に"@" でつないで指定します。連続したキーフィールドを指定する場合は、"key=3/7" の様に"/" でつないで指定します。
キーの長さやキーフィールド数の制限はありません。日本語などのマルチバイト文字が含まれていても構いません。フィールド位置の後に r を付けると、そのフィールドは降順にソートされます。n を付けると数値として比較されます。nr を付けると、数値として比較されて降順にソートされます。/ の前後のフィールドにソート種別を付ける場合は、前後で揃っている必要があります。
upl key=2n/5n file1 file2 ○
upl key=2n/5nr file1 file2 ×
upl key=2n/5r file1 file2 ×-e オプションを指定すると、以下の置換を行った文字列で比較を行います。
_ → 0x20 (space)
\0 → 0x00 (null)
\t → 0x09 (tab stop)
\n → 0x0a (new line)
\r → 0x0d (carrige return)
\_ → 0x5f (under score)
\\ → 0x5c (back slash)この置換の _ は、-s<c> オプションで変更することができます。