#!/bin/bash #kadai2_data2をall.csvにまとめる cat `ls ./kadai2-2_data/*` > all.csv if [ $1 -eq 1 ] #引数が1と等しいとき,つまり日最高気温を表示したいとき then sort -t , -g -k8,8 -r all.csv > all_sorted.csv #1つにまとめたデータall.csvの中身の第8フィールド,日最高気温の箇所を降順に並び替え、その結果をall_sorted.csvに代入する cut -d "," -f8 all_sorted.csv > Tmax_sorted.csv #日最高気温を降順に並び替えたデータall_sorted.csvから,","を区切りとして,第8フィールド,日最高気温の箇所を切り出し,その結果をTmax_sorted.csvに代入する a=10 b=11 #変数a,bに10,11を代入する l=`sed -n "$a p" Tmax_sorted.csv` m=`sed -n "$b p" Tmax_sorted.csv` #変数l,mに並べ替えられた日最高気温が入ったデータTmax_sorted.csvから変数a,b行目をそれぞれ抜出し、代入する n=`echo "$l> $m" | bc` #bcコマンドを用いて、変数l>mであるとする出力をnに代入する while [ $n -eq 0 ] #l>mが偽であるならば以下のループを続ける do a=`expr $a + 1` b=`expr $b + 1` #変数a,bに以前の変数a,bに1足した値を代入する l=`sed -n "$a p" Tmax_sorted.csv` m=`sed -n "$b p" Tmax_sorted.csv` #変数l,mに並べ替えられた日最高気温が入ったデータTmax_sorted.csvから新しい変数a,b行目をそれぞれ抜き出し、代入する n=`echo "$l> $m" | bc` #bcコマンドを用いて、変数l>mであるとする出力をnに代入する done sed -n "1,$a p" Tmax_sorted.csv > Tmaxrank.csv #並び替えられた日最高気温が入ったTmax_sorted.csvの1行目からループを抜けだした時の変数a行目までを抜き出し,Tmaxrank.csvに代入する #今Tmax_sorted.csvには上から10位までの日最高気温のデータのみが入っている sed -n "1,$a p" all_sorted.csv > all_sorted10.csv #日最高気温に対して降順に並び替えられたデータall_sorted.csvの1行目からループを抜けだした時の変数a行目までを抜き出し,all_sorted10.csvに代入する cut -d , -f22 all_sorted10.csv > year.csv #all_sorted10.csvから","を区切りとして,第22フィールドを抜き出し,year.csvに代入する sed -i -e "s/$/年/" year.csv #year.csvの各行のデータの最後に"年"を付け加える cut -d , -f23 all_sorted10.csv > month.csv #all_sorted10.csvから","を区切りとして,第23フィールドを抜き出し,month.csvに代入する sed -i -e "s/$/月/" month.csv #month.csvの各行のデータの最後に"月"を付け加える cut -d , -f1 all_sorted10.csv > date.csv #all_sorted10.csvから","を区切りとして,第1フィールドを抜き出し,date.csvに代入する sed -i -e "s/$/日/" date.csv #date.csvの各行のデータの最後に"日"を付け加える paste year.csv month.csv date.csv Tmaxrank.csv #year.csv,month.csv,date.csv,Tmaxrank.csvの4つのデータを並列して同時に表示する rm all.csv all_sorted.csv all_sorted10.csv Tmax_sorted.csv #余分なファイルを削除する #以下,日最高気温のときと同様の操作を行う elif [ $1 -eq 2 ] #引数が2と等しいとき,つまり日最低気温を表示したいとき then sort -t , -g -k9,9 -r all.csv > all_sorted.csv cut -d "," -f9 all_sorted.csv > Tmin_sorted.csv a=10 b=11 l=`sed -n "$a p" Tmin_sorted.csv` m=`sed -n "$b p" Tmin_sorted.csv` n=`echo "$l> $m" | bc` while [ $n -eq 0 ] do a=`expr $a + 1` b=`expr $b + 1` l=`sed -n "$a p" Tmin_sorted.csv` m=`sed -n "$b p" Tmin_sorted.csv` n=`echo "$l> $m" | bc` done sed -n "1,$a p" Tmin_sorted.csv > Tminrank.csv sed -n "1,$a p" all_sorted.csv > all_sorted10.csv cut -d , -f22 all_sorted10.csv > year.csv sed -i -e "s/$/年/" year.csv cut -d , -f23 all_sorted10.csv > month.csv sed -i -e "s/$/月/" month.csv cut -d , -f1 all_sorted10.csv > date.csv sed -i -e "s/$/日/" date.csv paste year.csv month.csv date.csv Tminrank.csv rm all.csv all_sorted.csv all_sorted10.csv Tmin_sorted.csv elif [ $1 -eq 3 ] #引数が3と等しいとき,つまり日積算降水量を表示したいとき then sort -t , -g -k4,4 -r all.csv > all_sorted.csv cut -d "," -f4 all_sorted.csv > rainf_sorted.csv a=10 b=11 l=`sed -n "$a p" rainf_sorted.csv` m=`sed -n "$b p" rainf_sorted.csv` n=`echo "$l> $m" | bc` while [ $n -eq 0 ] do a=`expr $a + 1` b=`expr $b + 1` l=`sed -n "$a p" rainf_sorted.csv` m=`sed -n "$b p" rainf_sorted.csv` n=`echo "$l> $m" | bc` done sed -n "1,$a p" rainf_sorted.csv > rainfrank.csv sed -n "1,$a p" all_sorted.csv > all_sorted10.csv cut -d , -f22 all_sorted10.csv > year.csv sed -i -e "s/$/年/" year.csv cut -d , -f23 all_sorted10.csv > month.csv sed -i -e "s/$/月/" month.csv cut -d , -f1 all_sorted10.csv > date.csv sed -i -e "s/$/日/" date.csv paste year.csv month.csv date.csv rainfrank.csv rm all.csv all_sorted.csv all_sorted10.csv rainf_sorted.csv elif [ $1 -eq 4 ] #引数が4と等しいとき,つまり比最小湿度を表示したいとき then sort -t , -g -k11,11 all.csv > all_sorted.csv #1つにまとめたデータall.csvの中身の第11フィールド,日最小湿度の箇所を昇順に並び替>え、その結果をall_sorted.csvに代入する cut -d "," -f11 all_sorted.csv > hum_sorted.csv a=10 b=11 l=`sed -n "$a p" hum_sorted.csv` m=`sed -n "$b p" hum_sorted.csv` n=`echo "$l< $m" | bc` while [ $n -eq 0 ] do a=`expr $a + 1` b=`expr $b + 1` l=`sed -n "$a p" hum_sorted.csv` m=`sed -n "$b p" hum_sorted.csv` n=`echo "$l< $m" | bc` done sed -n "1,$a p" hum_sorted.csv > humrank.csv sed -n "1,$a p" all_sorted.csv > all_sorted10.csv cut -d , -f22 all_sorted10.csv > year.csv sed -i -e "s/$/年/" year.csv cut -d , -f23 all_sorted10.csv > month.csv sed -i -e "s/$/月/" month.csv cut -d , -f1 all_sorted10.csv > date.csv sed -i -e "s/$/日/" date.csv paste year.csv month.csv date.csv humrank.csv rm all.csv all_sorted.csv all_sorted10.csv hum_sorted.csv else echo "$1に当てはまる項目はありません。日最高気温のベスト10の気温と年月日を知りたいときは1、日最低気温のベスト10の気温と年月日を知りたいときは2、日積算降水量のベスト10の気温と年月日を知りたいときは3、日最小湿度のベスト10の気温と年月日を知りたいときは4を入力してください。" fi