著者:USP研究所技術研究員 青木剛理
今回は、無意識にシェルを書くと計算誤りが発生しやすい、ゼロとヌルの違いについて説明します。
本記事掲載のシェルスクリプトマガジンvol.46は以下リンク先でご購入できます。
USP研究所 通販サイトでは、個人用uspTukubaiのご購入も可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
#!/bin/bash # # 売上集計 <fr> <to> <code...> # # 1:集計日(自) # 2:集計日(至) # 3-:集計対象の商品コード # ####################################### # 初期設定 (中略) ####################################### # オプション [ -z "$3" ] && exit 1 day_fr="$1" isdate $day_fr || exit 1 day_to="$2" isdate $day_to || exit 1 echo $* | delf 1 2 | tarr | msort key=1 > $tmp-codes ####################################### # データ取得 cat $lv3d/URIAGE | # 1:売上日 2:店舗コード 3:商品コード 4:単品価格 5:販売数 6:原価 awk "$day_fr"'<=$1' | awk '$1<='"$day_to" | cjoin0 key=3 $tmp-codes | msort key=2@3 > $tmp-data ############# # マスタ ※今回出力対象になる全店舗x全商品の名前つきリスト cat $tmp-data | # 1:売上日 2:店舗コード 3:商品コード 4:単品価格 5:販売数 6:原価 self 2 3 | cjoin1 key=2 $tbld/SHOHIN | join1 key=1 $tbld/TENPO | # 1:店舗コード 2:店舗名 3:地域コード 4:地域名 5:商品コード 6:商品名 self 1 5 2 3 4 6 > $tmp-output-master # 1:店舗コード 2:商品コード 3:店舗名 4:地域コード 5:地域名 6:商品名 ############# # 店舗ごと cat $tmp-data | # 1:売上日 2:店舗コード 3:商品コード 4:単品価格 5:販売数 6:原価 delr 5 "_" | lcalc '$2,$3,$4,$5,$4*$5,$6*$5' | # 1:店舗コード 2:商品コード 3:単品価格 4:販売数 5:販売価格 6:原価 sm2 1 2 4 6 | # 1:店舗コード 2:商品コード 3:販売数計 4:販売価格計 5:原価計 tee $tmp-data-2 | lcalc '$1,$2,$4,$3,$4/$3,(1-($5/$4))*100' | # 1:店舗コード 2:商品コード 3:販売価格計 4:販売数 5:1本あたり平均販売価格 6:利益率 marume 5.2 6.2 > $tmp-output-ten ############# # 1店舗あたり cat $tmp-data-2 | # 1:店舗コード 2:商品コード 3:販売数計 4:販売価格計 5:原価計 msort key=2 | sm2 +count 2 2 3 5 | # 1:商品コード 2:取扱店舗数 3:販売数計 4:販売価格計 5:原価計 tee $tmp-data-3 | lcalc '$1,$2,$4/$2,$3/$2' | # 1:商品コード 2:取扱店舗数 3:平均販売数 4:平均販売価格 marume 3.2 4.2 > $tmp-output-one ############# # 全店舗計 cat $tmp-data-3 | # 1:商品コード 2:取扱店舗数 3:販売数計 4:販売価格計 5:原価計 lcalc '$1,$4,$3,(1-$5/$4)*100' | marume 4.2 > $tmp-output-all # 1:商品コード 2:販売価格計 3:販売数計 4:全体利益率 ####################################### # 出力 # $tmp-output-master 1:店舗コード 2:商品コード 3:店舗名 4:地域コード 5:地域名 6:商品名 # $tmp-output-ten 1:店舗コード 2:商品コード 3:販売価格計 4:販売数 5:1本あたり平均販売価格 6:利益率 # $tmp-output-one 1:商品コード 2:取扱店舗数 3:平均販売数 4:平均販売価格 # $tmp-output-all 1:商品コード 2:販売価格計 3:販売数計 4:全体利益率 (後略) |