#!/bin/bash # ↑利用するシェルの記述 echo "表示したい値の番号を入力してください 1.猛暑日の日数 2.真夏日の日数 3.夏日の日数" # 猛暑日、真夏日、夏日に応じて番号を割振って入力させる。 read number # 入力された番号を読み取る case $number in 1) echo "各年の猛暑日の日数は以下の通りです" t=35 ;; 2) echo "各年の真夏日の日数は以下の通りです" t=30 ;; 3) echo "各年の夏日の日数は以下の通りです" t=25 ;; # 1なら猛暑日、2なら夏日、3なら夏日の基準となる気温を変数tに代入する *) echo "存在しない選択肢です" exit # 1〜3以外の値が入力された場合は強制終了 esac d=0 day=0 # カウントした日の変数をd、読み込んだ値の数をdayとして0を代入する。 for y in `seq 2005 2014`; # 年数をyとし、以下のdo内でy=2005から2014まで繰り返す do awk -F "," '{print int($8)}' ./kadai2_data/$y-??.csv >temp-$y.txt # csvファイルの8行目の値を、整数値(小数点以下切り捨て)の状態で抽出して、年ごとにtxtファイルにまとめる。 days=`awk 'END{print NR}' temp-$y.txt` # 抽出したファイルの最後の行の行数を、その年の日数として抜き出す cat temp-$y.txt | while read line; # 以下のdo文内でファイルを行ごとに読み込む do if [ $line -ge $t ] then d=`expr $d + 1` fi # もし読み込んだ行の値が、設定したtの値よりも大きければdに1を足して新しく代入する day=`expr $day + 1` # 読み込んだ日数dayの値を1つ増やす。 if [ $day -eq $days ] then echo "$y年 $d日" fi # もし読み込んだ値の数が、その年の日数と一致すれば、dの値を年とともに書き出す。 done d=0 day=0 # 次の年のループに入る前にdとdayの値をリセットする。 done rm temp-????.txt # 最後に作ったtxtファイルを消去する。 exit