uspTukubaiコマンドに関する様々な資料がここにあります。

 

 

魂内検索

DOCUMENTS

COMMAND

FORUM

UEC DOCS

VIDEO

 

ABC順リスト |  カテゴリ別リスト
動画説明

sm2

概要

sm2 : キー単位での値の集計

書式

Usage   : sm2 [+count] <k1> <k2> [<s1> <s2>] <file>
              sm2 [+count] [key=<key>] [val=<val>] <file>
Version : Tue Oct 20 13:16:57 JST 2015
Edition : 1

説明

<file> ファイルから、キーが同じレコードの各フィールドの値を集計しま
す。キーフィールドはソートされている必要があります。指定方法は、開始
フィールド <k1> から終了フィールド <k2> で指定する方法(従来記法)と、
key=<key> で指定する方(キーワード記法)があります。キーワード記法
では、<key> は以下の2形式が可能です。

1. 1         (通常形式)
2. 1/4       (範囲形式 連続したフィールドの指定)

従来記法で <k1> <k2> に 0 を指定した場合とキーワード記法で key=<key>
を省略した場合はキー無しとなり、集計フィールドの総合計を出力します。

集計対象フィールドは、<s1> <s2> を指定した場合は <s1> から <s2> まで
のフィールド、val=<val> を指定した場合は key=<key> と同様なフィール
ド、いずれも指定しなかった場合は、従来記法では <k2> の次以降の全フィ
ールド、キーワード記法ではキーフィールド以外の全フィールドになります。

いずれの記法においても、キーフィールドは集計対象フィールドより前のフ
ィールドでなけれなりません。

なお、キー及び集計フィールドのいずれの範囲にも指定していないフィール
ドは出力されません。


例1

店別日別の各商品の売数
No   店     日付     A  B  C  D  E
$ keta data
0001 新橋店 20060201 91 59 20 76 54
0001 新橋店 20060202 46 39  8  5 21
0001 新橋店 20060203 82  0 23 84 10
0002 池袋店 20060201 30 50 71 36 30
0002 池袋店 20060202 78 13 44 28 51
0002 池袋店 20060203 58 71 20 10  6
0003 新宿店 20060201 82 79 16 21 80
0003 新宿店 20060202 50  2 33 15 62
0003 新宿店 20060203 52 91 44  9  0
0004 上野店 20060201 60 89 33 18  6
0004 上野店 20060202 95 60 35 93 76
0004 上野店 20060203 92 56 83 96 75

店別の売れ数の合計を出します。第1フィールドから第2フィールドをキー
として、第4フィールドから第8フィールドを集計します。

従来記法
$ sm2 1 2 4 8 data > data2
$ cat data2
0001 新橋店 219 98 51 165 85
0002 池袋店 166 134 135 74 87
0003 新宿店 184 172 93 45 142
0004 上野店 247 205 151 207 157

キーワード記法
$ sm2 key=1/2 val=4/8 data > data2

例2

"+count"オプションはキー毎の集計すると同時に、元データの各キー毎のレ
コードの行数をキーの直後に挿入出力します。
$ cat data
1111 3
1111 5
1111 2
2222 3
2222 10
3333 4
3333 8
3333 9
3333 6

キーが同一の行を出力します。

従来記法
$ sm2 +count 1 1 2 2 data > data2
$ cat data2
1111 3 10
2222 2 13
3333 4 27

キーワード記法
$ sm2 +count key=1 val=2 data > data2

例3

sm2 は小数点がある場合、各キー、各フィールド毎に一番精度の高い数に揃
えて出力します。

$ cat data3 | keta --
a 1.4   2.55
a 2     4
b 1.33  2.1
b 5.222 3.12

従来記法
$ sm2 1 1 2 3 data3 | keta --
a 3.4   6.55
b 6.552 5.22

キーワード記法
$ sm2 key=1 val=2/3 data3

例4

キーを 0 0 に指定すると、集計フィールドの総合計を出力します。
$ cat data4
a 1
b 2
c 3

従来記法
$ sm2 0 0 2 2 data4
6

キーワード記法
$ sm2 val=2 data4

指定したディレクトリに存在するファイルのサイズを合計するには
$ ls -l directory | tail -n +2 | sm2 0 0 5 5