up3

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

名前

up3 : 二つのファイルを同一キーフィールドでマージする

書式

使い方とオプション

Usage

up3 key=<pos> <master> <tran>

Option

-e
-s<c>

説明

引数のファイル又は標準入力のトランザクションファイル <tran> の各レコードを、key=<pos> で指定したフィールドの値をマスターファイル <master>の同一キーフィールドの値と比較し、値が同じ <master> ファイルのレコードの下に挿入、マージをするツールです。<master> <tran> とも、キーとなるフィールドはソートされている必要があります。

例(その1)

$ cat master       # 1日目~3日目までのデータ
a店 1日目 103 62
a店 2日目 157 94
a店 3日目 62 30
b店 1日目 210 113
b店 2日目 237 121
b店 3日目 150 82
c店 1日目 81 52
c店 2日目 76 49
c店 3日目 38 21

$ cat tran         # 4日目~5日目までのデータ
a店 4日目 131 84
a店 5日目 189 111
b店 4日目 198 105
b店 5日目 259 189
c店 4日目 81 48
c店 5日目 98 61

$ up3 key=1 master tran > data
$ cat data          <- 1日目~5日目までマージされている。
a店 1日目 103 62
a店 2日目 157 94
a店 3日目 62 30
a店 4日目 131 84    <- "master" の "a店" のレコードの下に
a店 5日目 189 111   <- "tran" の "a店" のレコードが挿入される。
b店 1日目 210 113
b店 2日目 237 121
b店 3日目 150 82
b店 4日目 198 105
b店 5日目 259 189
c店 1日目 81 52
c店 2日目 76 49
c店 3日目 38 21
c店 4日目 81 48
c店 5日目 98 61

複数のキーフィールドを指定する場合は、“key=2@1” の様に“@” でつないで指定します。連続したキーフィールドを指定する場合は、“key=3/7” の様に“/” でつないで指定します。

キーの長さやキーフィールド数の制限はありません。日本語などのマルチバイト文字が含まれていても構いません。フィールド位置の後に r を付けると、そのフィールドは降順にソートされます。n を付けると数値として比較されます。nr を付けると、数値として比較されて降順にソートされます。/ の前後のフィールドにソート種別を付ける場合は、前後で揃っている必要があります。

up3 key=2n/5n  file1 file2      ○
up3 key=2n/5nr file1 file2      ×
up3 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> オプションで変更することができます。

Version and Edition

Version : Tue Jan 12 23:04:38 JST 2021

Edition : 3


© 2021 Universal Shell Programming Laboratory site