UEC - UNIXを深く理解し、シェルプログラミングを極めるコミュニティサイト

- Tukubaiマニュアル
  - cgi-name(1)
  - check_attr_name(1)
  - check_need_name(1)
  - comma(1)
  - count(1)
  - ctail(1)
  - delf(1)
  - divsen(1)
  - getfirst(1)
  - getlast(1)
  - gyo(1)
  - han(1)
  - join0(1)
  - join1(1)
  - join2(1)
  - juni(1)
  - kasan(1)
  - keta(1)
  - keycut(1)
  - loopj(1)
  - loopx(1)
  - map(1)
  - marume(1)
  - mdate(1)
  - mime-read(1)
  - mojihame(1)
  - nameread(1)
  - plus(1)
  - rank(1)
  - ratio(1)
  - retu(1)
  - self(1)
  - sm2(1)
  - sm4(1)
  - sm5(1)
  - tarr(1)
  - tateyoko(1)
  - tcat(1)
  - unmap(1)
  - up3(1)
  - yarr(1)
  - ycat(1)
  - yobi(1)
  - ysum(1)
  - zen(1)
  - タグ形式(5)
  - ネーム形式(5)
  - フィールド形式(5)

# Tukubaiオンラインコマンドマニュアル

## kasan(USP Lab(1))

### 【名前】

kasan : 累計

### 【書式】

    Usage	: kasan [+r] [ref=<ref>] key=<n> <file>
    Version	: Thu Dec 15 13:46:38 JST 2011

### 【説明】

引数のファイルまたは標準入力のテキストデータの指定したフィールドの値を、各行ごとに加算して指定したフィールドの次のフィールドに挿入する。累計値を求める場合などに使用する。

### 【例1】

店別の累計の仕入れ値を算出する。ここでは4フィールド目の値を加算して5フィールド目に挿入する。

    $ cat data
    a店 1日目 103 62		←店名 日付 売れ数 仕入数
    a店 2日目 157 94
    a店 3日目 62 30
    a店 4日目 131 84
    a店 5日目 189 111
    a店 6日目 350 20
    a店 7日目 412 301
    $

    $ kasan key=4 data
    a店 1日目 103 62 62
    a店 2日目 157 94 156
    a店 3日目 62 30 186
    a店 4日目 131 84 270
    a店 5日目 189 111 381
    a店 6日目 350 20 401
    a店 7日目 412 301 702
    $

### 【例2】

あるフィールドの値が変わった場所で加算をリセットする場合は、そのリセットのキーとなるフィールドをref=で指定する。たとえば店別の累計仕入数を算出する場合には、次のように1フィールド目が変更されるごとに加算をリセットする。

    $ cat data
    a店 1日目 103 62		←店名 日付 売れ数 仕入数
    a店 2日目 157 94
    a店 3日目 62 30
    a店 4日目 131 84
    b店 1日目 210 113
    b店 2日目 237 121
    b店 3日目 150 82
    b店 4日目 198 105
    c店 1日目 81 52
    c店 2日目 76 49
    c店 3日目 38 21
    c店 4日目 81 48
    $

    $ kasan ref=1 key=4 data
    a店 1日目 103 62 62
    a店 2日目 157 94 156
    a店 3日目 62 30 186
    a店 4日目 131 84 270
    b店 1日目 210 113 113		←累計加算をリセット
    b店 2日目 237 121 234
    b店 3日目 150 82 316
    b店 4日目 198 105 421
    c店 1日目 81 52 52		←累計加算をリセット
    c店 2日目 76 49 101
    c店 3日目 38 21 122
    c店 4日目 81 48 17
    $

### 【例3】

元データのフィールドをその加算値と置き換えて出力する場合は+rオプションを使用する。たとえば仕入れ数を累計仕入れ数に置き換えるのであれば、この場合であれば4フィールド目の加算値を4フィールド目に出力するようにすれば良い。

    $ cat data		←店名 日付 売れ数 仕入数
    a店 1日目 103 62
    a店 2日目 157 94
    a店 3日目 62 30
    a店 4日目 131 84
    a店 5日目 189 111
    a店 6日目 350 20
    a店 7日目 412 301
    $

    $ kasan +r key=4 data
    a店 1日目 103 62
    a店 2日目 157 156
    a店 3日目 62 186
    a店 4日目 131 270
    a店 5日目 189 381
    a店 6日目 350 401
    a店 7日目 412 702
    $

### 【例4】

小数点のあるデータを加算する場合、それまでの行にある最大小数桁数に合わせて出力するようになる。

    $ cat data
    A 1
    A 1.2
    A 1.23
    B 2
    B 2.34
    B 3
    $

    $ kasan ref=1 key=2 data
    A 1 1
    A 1.2 2.2
    A 1.23 3.43
    B 2 2
    B 2.34 4.34
    B 3 7.34
    $

### 【例5】

key=<pos>で指定できるのは数値、範囲(/)、列挙(@)、NF NF-<n>である。

    $ kasan key=1 data

第2から第3フィールドの各フィールドを加算し、加算値をそれぞれのフィールドの直後に挿入するには次のようにコマンドを実行する。

    $ cat data
    A 1 2
    A 3 4
    A 5 6
    $

    $ kasan key=2/3 data
    A 1 1 2 2
    A 3 4 4 6
    A 5 9 6 12
    $

第2フィールドと第4フィールドの各フィールドを加算し、加算値をそれぞれのフィールドの直後に挿入するには次のようにコマンドを実行する。

    $ kasan key=2@4 data

次のようにNFも指定できる。

    $ kasan key=NF data

    $ kasan key=NF-2 data

### 【関連項目】

plus(USP Lab(1))、ratio(USP Lab(1))、sm2(USP Lab(1))、sm4(USP Lab(1))、sm5(USP Lab(1))、ysum(USP Lab(1))

- ∧

last modified: 2012-04-12 20:23:30