カテゴリー
【実践!CSVデータ集計スクリプト作成編】集計を対話的にするスクリプト作成の基礎
※ 当ページには【広告/PR】を含む場合があります。
2021/04/15
はじめに
集計操作をより対話的に操作するために
cat <<EOF > accounting.csv
2021年01月01日,51,98875
2021年01月02日,91,150457
2021年01月03日,77,134982
2021年01月04日,53,107022
2021年01月05日,48,95401
2021年01月06日,66,124309
2021年01月07日,81,143109
2021年01月08日,57,111326
2021年01月09日,93,179488
2021年01月10日,104,220456
2021年01月11日,87,182094
2021年01月12日,60,115022
2021年01月13日,71,130943
2021年01月14日,63,124072
2021年01月15日,50,110650
2021年01月16日,77,135557
2021年01月17日,81,140073
2021年01月18日,57,113078
2021年01月19日,62,146033
2021年01月20日,82,175592
2021年01月21日,99,174301
2021年01月22日,72,131045
2021年01月23日,60,120744
2021年01月24日,93,169973
2021年01月25日,100,194532
2021年01月26日,93,165395
2021年01月27日,70,128044
2021年01月28日,55,117064
2021年01月29日,86,149561
2021年01月30日,79,137043
2021年01月31日,65,148774
EOF
日時, 来店客数, 当日売上高
対話型の入力の基本 ~ Readコマンド
read
#!/bin/bash
function DoAScript() {
echo "スクリプトA: $1が選択されました。"
}
function DoBScript() {
echo "スクリプトB: $1が選択されました。"
}
function Addup() {
printf "集計したい項目を 1 か 2 で選択してください\n"
printf "\t1) 月間総来客数 \t2) 月間総売上\n"
printf "※ 終了は q か c を入力!\n>>>"
read OPT
if [ $OPT == '1' ] ; then
DoAScript "$OPT"
elif [ $OPT == '2' ] ; then
DoBScript "$OPT"
elif [ $OPT == 'q' ] || [ $OPT == 'c' ] ; then
echo "終了"
exit 1
else
printf "ヒント...1 か 2 で入力!\n\n"
Addup
fi
}
Addup
$ chmod +x interactive_add_up.sh
$ ./interactive_add_up.sh
集計したい項目を 1 か 2 で選択してください
1) 月間総来客数 2) 月間総売上
※ 終了は q か c を入力!
>>>3
ヒント...1 か 2 で入力!
集計したい項目を 1 か 2 で選択してください
1) 月間総来客数 2) 月間総売上
※ 終了は q か c を入力!
>>>2
スクリプトB: 2が選択されました。
集計したい項目を切り替える
#!/bin/bash
function TotalCustomer() {
cat $1 | awk -F"," 'BEGIN{total=0}{total+=$2}END{print total}'
}
function TotalSales() {
cat $1 | awk -F"," 'BEGIN{total=0}{total+=$3}END{print total}'
}
function Addup() {
printf "集計したい項目を 1 か 2 で選択してください\n"
printf "\t1) 月間総来客数 \t2) 月間総売上\n"
printf "※ 終了は q か c を入力!\n>>>"
read OPT
if [ $OPT == '1' ] ; then
TotalCustomer "$1"
elif [ $OPT == '2' ] ; then
TotalSales "$1"
elif [ $OPT == 'q' ] || [ $OPT == 'c' ] ; then
echo "終了"
exit 1
else
printf "ヒント...1 か 2 で入力!\n\n"
Addup $1
fi
}
Addup $1
$./interactive_add_up.sh accounting.csv
集計したい項目を 1 か 2 で選択してください
1) 月間総来客数 2) 月間総売上
※ 終了は q か c を入力!
>>>1
2283
$./interactive_add_up.sh accounting.csv
集計したい項目を 1 か 2 で選択してください
1) 月間総来客数 2) 月間総売上
※ 終了は q か c を入力!
>>>2
4375015
参考サイト
記事を書いた人
ナンデモ系エンジニア
主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。
カテゴリー