Tukubaiオンラインコマンドマニュアル - sm2(1)
sm2(1)
【名前】
sm2
: キー単位での値の集計
【書式】
Usage : sm2 [+count] <k1> <k2> <s1> <s2> [<file>] Version : Fri Jul 29 15:32:20 JST 2022
【説明】
<file>
ファイルから、キーが同じ行の各フィールドの値を集計する。k1で指定したフィールドからk2で指定したフィールドまでをキーとして、s1で指定したフィールドからs2で指定したフィールドまでの各フィールドを集計する。同じキーをもつ行は1行に集計されて出力される。なお、キーまたは集計フィールドいずれの範囲にも指定していないフィールドについては出力はされない。
【例1】
$ cat 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 0001 新橋店 219 98 51 165 85 0002 池袋店 166 134 135 74 87 0003 新宿店 184 172 93 45 142 0004 上野店 247 205 151 207 157 $
【例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 1111 3 10 2222 2 13 3333 4 27 $
【例3】
sm2(1)は小数点がある場合、各キー、各フィールド毎に一番精度の高い数に合わせて出力する。
$ cat data3 a 1.4 2.55 a 2 4 b 1.33 2.1 b 5.222 3.12 $
$ sm2 1 1 2 3 data3 a 3.4 6.55 b 6.552 5.22 $
【例4】
キーを0 0に指定すると、集計フィールドの総合計を出力する。
$ cat data4 a 1 b 2 c 3 $
$ sm2 0 0 2 2 data4 6 $
指定したディレクトリに存在するファイルのサイズを合計するには次のようにコマンドを実行する。
$ ls -l directory | sm2 0 0 5 5