Tukubaiオンラインコマンドマニュアル - sm5(1)

sm5(1)

【名前】

sm5 : 大計

【書式】

Usage   : sm5 [+h] <k1> <k2> <s1> <s2> <file>
Version : Sat Jun 20 21:57:22 JST 2020
Edition : 1

【説明】

<input>ファイルに大計(全行の合計値)行を追加する。k1で指定したフィールドからk2で指定したフィールドまでをキー、s1からs2までのフィールドを集計フィールドとして、キー以外の集計各フィールドの全合計の行を最終行に挿入する。この行のキーフィールドは@で補完される。

sm4(1)で小計、中計を付与されているファイルを処理する場合は、sm4(1)で付与した@の小計および中計行は無視して大計を計算する。

【例1】

$ cat data
01 埼玉県 01 さいたま市 91 59 20 76 54          ←各都市での調査データ
01 埼玉県 02 川越市 46 39 8 5 21
01 埼玉県 03 熊谷市 82 0 23 84 10
02 東京都 04 新宿区 30 50 71 36 30
02 東京都 05 中央区 78 13 44 28 51
02 東京都 06 港区 58 71 20 10 6
02 東京都 07 八王子市 82 79 16 21 80
02 東京都 08 立川市 50 2 33 15 62
03 千葉県 09 千葉市 52 91 44 9 0
03 千葉県 10 市川市 60 89 33 18 6
03 千葉県 11 柏市 95 60 35 93 76
04 神奈川県 12 横浜市 92 56 83 96 75
04 神奈川県 13 川崎市 30 12 32 44 19
04 神奈川県 14 厚木市 48 66 23 71 24
$

大計を出力する。

$ sm5 1 4 5 NF data
01 埼玉県 01 さいたま市 91 59 20 76 54
01 埼玉県 02 川越市 46 39 8 5 21
01 埼玉県 03 熊谷市 82 0 23 84 10
02 東京都 04 新宿区 30 50 71 36 30
02 東京都 05 中央区 78 13 44 28 51
02 東京都 06 港区 58 71 20 10 6
02 東京都 07 八王子市 82 79 16 21 80
02 東京都 08 立川市 50 2 33 15 62
03 千葉県 09 千葉市 52 91 44 9 0
03 千葉県 10 市川市 60 89 33 18 6
03 千葉県 11 柏市 95 60 35 93 76
04 神奈川県 12 横浜市 92 56 83 96 75
04 神奈川県 13 川崎市 30 12 32 44 19
04 神奈川県 14 厚木市 48 66 23 71 24
@@ @@@@@@ @@ @@@@@@@@@@ 894 687 485 606 514
$

【例2】

sm4(1)で小計および中計が追加されたデータを処理する場合は次のようになる。

$ cat data
01 埼玉県 01 さいたま市 91 59 20 76 54
01 埼玉県 02 川越市 46 39 8 5 21
01 埼玉県 03 熊谷市 82 0 23 84 10
01 埼玉県 @@ @@@@@@@@@@@@@@@@ 173 59 43 160 64
02 東京都 04 新宿区 30 50 71 36 30
02 東京都 05 中央区 78 13 44 28 51
02 東京都 06 港区 58 71 20 10 6
02 東京都 07 八王子市 82 79 16 21 80
02 東京都 08 立川市 50 2 33 15 62
02 東京都 @@ @@@@@@@@@@@@@@@@ 248 213 151 95 167
03 千葉県 09 千葉市 52 91 44 9 0
03 千葉県 10 市川市 60 89 33 18 6
03 千葉県 11 柏市 95 60 35 93 76
03 千葉県 @@ @@@@@@@@@@@@@@@@ 207 240 112 120 82
04 神奈川県 12 横浜市 92 56 83 96 75
04 神奈川県 13 川崎市 30 12 32 44 19
04 神奈川県 14 厚木市 48 66 23 71 24
04 神奈川県 @@ @@@@@@@@@@@@@@@@ 170 134 138 211 118
$
$ sm5 1 4 5 NF data
01 埼玉県 01 さいたま市 91 59 20 76 54
01 埼玉県 02 川越市 46 39 8 5 21
01 埼玉県 03 熊谷市 82 0 23 84 10
01 埼玉県 @@ @@@@@@@@@@@@@@@@ 173 59 43 160 64
02 東京都 04 新宿区 30 50 71 36 30
02 東京都 05 中央区 78 13 44 28 51
02 東京都 06 港区 58 71 20 10 6
02 東京都 07 八王子市 82 79 16 21 80
02 東京都 08 立川市 50 2 33 15 62
02 東京都 @@ @@@@@@@@@@@@@@@@ 248 213 151 95 167
03 千葉県 09 千葉市 52 91 44 9 0
03 千葉県 10 市川市 60 89 33 18 6
03 千葉県 11 柏市 95 60 35 93 76
03 千葉県 @@ @@@@@@@@@@@@@@@@ 207 240 112 120 82
04 神奈川県 12 横浜市 92 56 83 96 75
04 神奈川県 13 川崎市 30 12 32 44 19
04 神奈川県 14 厚木市 48 66 23 71 24
04 神奈川県 @@ @@@@@@@@@@@@@@@@ 170 134 138 211 118
@@ @@@@@@ @@ @@@@@@@@@@ 894 687 485 606 514
$

【コラム】sm系コマンドの合わせ方

データを集計する帳票をTukubaiで記述する場合、同じキーを集計して小計、中計を出して最後に大計を出す、という処理が頻出する。こういった場合はsm2(1)sm4(1)sm5(1)を次のように多段に組み合わせて使用することが多い。

$ cat data              |
sm2 1 6 7 NF            |       ←同一キーで集計
sm4 1 4 5 6 7 NF        |       ←小計
sm4 1 2 3 6 7 NF        |       ←中計
sm5 1 6 7 NF > result           ←大計を出力

【関連項目】

kasan(1)plus(1)ratio(1)sm2(1)sm4(1)ysum(1)

Last modified: 2022-08-13 08:42:36