sm4

提供: Personal Tukubai for Academic
ナビゲーションに移動 検索に移動

名前

sm4 : 小計行、中計行を挿入する

書式

使い方とオプション

Usage

sm4 [+<n>h] [-d<string>] <k1> <k2> <d1> <d2> [<s1> <s2>] <file>
sm4 [+<n>h] [-d<string>] key=<key> [dummy=<dummy>] [val=<val>] <file>

Option

説明

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

(通常形式)

1 

(範囲形式 連続したフィールドの指定)

1/4

<d1> から <d2> までのフィールド又は dummy=<dummy> で指定したフィールドはダミーフィールドになり、手を加えられず、そのまま出力されます。合計レコードでは “@” 文字で補完されます。従来記法で <d1> <d2> に “x”を指定した場合と、キーワード記法で dummy を省略した場合はダミーフィールド無しとなり、集計行のキーフィールドが “@” 文字で補完されます。

集計対象フィールドは、<s1> <s2> を指定した場合は <s1> から <s2> までのフィールド、val=<val> を指定した場合は key=<key> と同様なフィールド、いずれも指定しなかった場合は、従来記法では <d2> の次以降の全フィールド、キーワード記法ではキーフィールドとダミーフィールド以外の全フィールドになります。同一キーのレコード群の最終行に合計レコードを挿入します。小計行、中計行を段階的に挿入するために、“@” だけのダミーフィールドを持つレコードは集計から除外されます。この機能により、sm4 を複数回使用することができます。

いずれの記法においても、キーフィールド、ダミーフィールド、集計対象フィールドの順でなけれなりません。また、全てのフィールドが、いずれかに指定されなければなりません。

+<n>h を指定した場合、最初の <n> 行はヘッダーとみなされ、集計の対象とならず、そのまま出力されます。<n> を省略した場合は先頭行のみがヘッダーとみなされます。

-d<string> オプションでダミー文字列を変更することができます。この場合、フィールドの幅によらず、常に <string> が各ダミーフィールドに挿入されます。集計除外対象は、ダミーフィールドが <string> のレコードになります。

例(その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

県別に小計を出します。

$ sm4 1 2 3 4 5 NF data > data2
$ cat data2
01 埼玉県 01 さいたま市 91 59 20 76 54
01 埼玉県 02 川越市 46 39 8 5 21
01 埼玉県 03 熊谷市 82 0 23 84 10
01 埼玉県 @@ @@@@@@@@@@ 219 98 51 165 85
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 東京都 @@ @@@@@@@@@@ 298 215 184 110 229
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

例(その2)

小計と中計を出す場合

$ cat data
01 関東地区 01 埼玉県 01 さいたま市 91 59 20 76 54
01 関東地区 01 埼玉県 03 熊谷市 82 0 23 84 10
01 関東地区 02 東京都 04 新宿区 30 50 71 36 30
01 関東地区 02 東京都 05 中央区 78 13 44 28 51
01 関東地区 02 東京都 07 八王子市 82 79 16 21 80
02 関西地区 01 大阪府 01 大阪市 91 59 20 76 54
02 関西地区 01 大阪府 02 八尾市 46 39 8 5 21
02 関西地区 01 大阪府 03 川西市 82 0 23 84 10
02 関西地区 02 兵庫県 04 神戸市 30 50 71 36 30
02 関西地区 02 兵庫県 05 姫路市 78 13 44 28 51
02 関西地区 02 兵庫県 06 明石市 58 71 20 10 6
02 関西地区 02 兵庫県 07 加古川市 82 79 16 21 80
02 関西地区 02 兵庫県 08 芦屋市 50 2 33 15 62
02 関西地区 03 京都府 09 京都市 52 91 44 9 0
02 関西地区 03 京都府 10 舞鶴市 60 89 33 18 6

$ sm4 1 4 5 6 7 11 data > data2
$ cat data2
01 関東地区 01 埼玉県 01 さいたま市 91 59 20 76 54
01 関東地区 01 埼玉県 03 熊谷市 82 0 23 84 10
01 関東地区 01 埼玉県 @@ @@@@@@@@@@ 173 59 43 160 64
01 関東地区 02 東京都 04 新宿区 30 50 71 36 30
01 関東地区 02 東京都 05 中央区 78 13 44 28 51
01 関東地区 02 東京都 07 八王子市 82 79 16 21 80
01 関東地区 02 東京都 @@ @@@@@@@@@@ 190 142 131 85 161
02 関西地区 01 大阪府 01 大阪市 91 59 20 76 54
02 関西地区 01 大阪府 02 八尾市 46 39 8 5 21
02 関西地区 01 大阪府 03 川西市 82 0 23 84 10
02 関西地区 01 大阪府 @@ @@@@@@@@@@ 219 98 51 165 85
02 関西地区 02 兵庫県 04 神戸市 30 50 71 36 30
02 関西地区 02 兵庫県 05 姫路市 78 13 44 28 51
02 関西地区 02 兵庫県 06 明石市 58 71 20 10 6
02 関西地区 02 兵庫県 07 加古川市 82 79 16 21 80
02 関西地区 02 兵庫県 08 芦屋市 50 2 33 15 62
02 関西地区 02 兵庫県 @@ @@@@@@@@@@ 298 215 184 110 229
02 関西地区 03 京都府 09 京都市 52 91 44 9 0
02 関西地区 03 京都府 10 舞鶴市 60 89 33 18 6
02 関西地区 03 京都府 @@ @@@@@@@@@@ 112 180 77 27 6

$ sm4 1 2 3 6 7 11 data2 >data3
$ cat data3
01 関東地区 01 埼玉県 01 さいたま市 91 59 20 76 54
01 関東地区 01 埼玉県 03 熊谷市 82 0 23 84 10
01 関東地区 01 埼玉県 @@ @@@@@@@@@@ 173 59 43 160 64
01 関東地区 02 東京都 04 新宿区 30 50 71 36 30
01 関東地区 02 東京都 05 中央区 78 13 44 28 51
01 関東地区 02 東京都 07 八王子市 82 79 16 21 80
01 関東地区 02 東京都 @@ @@@@@@@@@@ 190 142 131 85 161
01 関東地区 @@ @@@@@@ @@ @@@@@@@@@@ 363 201 174 245 225
02 関西地区 01 大阪府 01 大阪市 91 59 20 76 54
02 関西地区 01 大阪府 02 八尾市 46 39 8 5 21
02 関西地区 01 大阪府 03 川西市 82 0 23 84 10
02 関西地区 01 大阪府 @@ @@@@@@@@@@ 219 98 51 165 85
02 関西地区 02 兵庫県 04 神戸市 30 50 71 36 30
02 関西地区 02 兵庫県 05 姫路市 78 13 44 28 51
02 関西地区 02 兵庫県 06 明石市 58 71 20 10 6
02 関西地区 02 兵庫県 07 加古川市 82 79 16 21 80
02 関西地区 02 兵庫県 08 芦屋市 50 2 33 15 62
02 関西地区 02 兵庫県 @@ @@@@@@@@@@ 298 215 184 110 229
02 関西地区 03 京都府 09 京都市 52 91 44 9 0
02 関西地区 03 京都府 10 舞鶴市 60 89 33 18 6
02 関西地区 03 京都府 @@ @@@@@@@@@@ 112 180 77 27 6
02 関西地区 @@ @@@@@@ @@ @@@@@@@@@@ 629 493 312 302 320

例(その3)

特殊な場合(ダミーフィールドが無い場合)

$ cat data
埼玉県 91 59 20 76 54
埼玉県 46 39 8 5 21
埼玉県 82 0 23 84 10
東京都 30 50 71 36 30
東京都 78 13 44 28 51
東京都 58 71 20 10 6
東京都 82 79 16 21 80
東京都 50 2 33 15 62
千葉県 52 91 44 9 0
千葉県 60 89 33 18 6
千葉県 95 60 35 93 76
神奈川県 92 56 83 96 75
神奈川県 30 12 32 44 19
神奈川県 48 66 23 71 24

$ sm4 1 1 x x 2 6 data > data2
$ cat data2
埼玉県 91 59 20 76 54
埼玉県 46 39 8 5 21
埼玉県 82 0 23 84 10
@@@@@@ 219 98 51 165 85
東京都 30 50 71 36 30
東京都 78 13 44 28 51
東京都 58 71 20 10 6
東京都 82 79 16 21 80
東京都 50 2 33 15 62
@@@@@@ 298 215 184 110 229
千葉県 52 91 44 9 0
千葉県 60 89 33 18 6
千葉県 95 60 35 93 76
@@@@@@ 207 240 112 120 82
神奈川県 92 56 83 96 75
神奈川県 30 12 32 44 19
神奈川県 48 66 23 71 24
@@@@@@ 170 134 138 211 118

例(その4)

-d<string> オプション

$ 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

$ sm4 -d+++ 1 2 3 4 5 NF data > data2 
$ cat data2 
01 埼玉県 01 さいたま市 91 59 20 76 54
01 埼玉県 02 川越市 46 39 8 5 21
01 埼玉県 03 熊谷市 82 0 23 84 10
01 埼玉県 +++ +++ 219 98 51 165 85
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 東京都 +++ +++ 298 215 184 110 229
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

Version and Edition

Version : Tue Jun 18 19:00:37 JST 2019

Edition : 1


© 2021 Universal Shell Programming Laboratory site