cjoin0

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

名前

cjoin0 : シーケンシャルキーマッチングセレクト

書式

使い方とオプション

Usage

cjoin0 key=<key> <master> <tran>

Option

+ng[<fd>]
-e
-s<c>

説明

トランザクションファイル <tran> の “key=<key>” で指定したキーフィールドがマスターファイル <master> の対応するキーフィールドとマッチした行のみを <tran> から抽出して出力します。

<master> の対応するキーフィールドとは、<key> の最小のフィールドが第1フィールドになるように平行移動させたフィールドになります。<key> としては、

key=3     <tran> の第3フィールド
key=3/5   <tran> の第3,4,5フィールド(<master> は第1,2,3フィールド)
key=4@3   <tran> の第4,3フィールド(<master> は第2,1フィールド)
key=NF    <tran> の最終フィールド(<master> は第1フィールド)
key=NF-3  <tran> の(最終-3)フィールド(<master> は第1フィールド)

が指定できます。更に、msort(USP) のソート種別を指定することができます。

<master> のキーフィールドはソート種別に応じてソートされていることが必要です。更にキーフィールドについて、各レコードがユニークでなければなりません。(キーフィールドが同じ値を持つレコードが複数あってはなりません)<tran> についてはこの制約は無く、キーフィールドが同じ値を持つレコードが有っても構いません。

join0 とは異なり、<tran> のキーフィールドはソートされている必要がありません。

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

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

cjoin0 は <master> 全体をメモリーに読み込みますので、<master> が巨大だとメモリー確保エラーが起きるので注意が必要です。

例(その1) 通常の使い方

$ cat master
0000003 杉山______ 26 F
0000005 崎村______ 50 F
0000007 梶川______ 42 F

$ cat tran
0000005 82 79 16 21 80
0000001 46 39 8  5  21
0000004 58 71 20 10 6
0000009 60 89 33 18 6
0000003 30 50 71 36 30
0000007 50 2  33 15 62

$ cjoin0 key=1 master tran > ok
$ cat ok
0000005 82 79 16 21 80
0000003 30 50 71 36 30
0000007 50 2  33 15 62

例(その2) +ng オプションの使い方

$ cjoin0 +ng3 key=1 master tran > ok-data 3> ng-data
$ cat ng-data
0000001 46 39 8  5  21
0000004 58 71 20 10 6
0000009 60 89 33 18 6

<fd> を省略すると、マッチしないレコードは標準エラー出力へ出力します。

$ cjoin0 +ng key=1 master tran > ok-data 2> ng-data

例(その3) 標準入力から読む

$ cat master | cjoin0 key=1 - tran
$ cat tran | cjoin0 key=1 master -
$ cat tran | cjoin0 key=1 master      # "-" を省略できます。

備考

key=<key> 引数と -e/-s<c> オプションは msort(USP) と同じです。

Version and Edition

Version : Thu Jan 14 11:01:02 JST 2021

Edition : 1


© 2021 Universal Shell Programming Laboratory site