#!/bin/bash year=2008 #●2008年から2017年まで、以下の作業を繰り返す。 while [ $year -le 2017 ] do grep "気温" data$year.csv > head$year.txt #●年月日を抜き出す。 want1=1 #必要とする要素のある列番号 while : do date=`awk -F"," -v w1=$want1 '{ print $w1 }' head$year.txt` #目的とする文字列を変数として考える。 if [ "$date" = '年月日' ] then awk -F"," -v w1=$want1 '{ print $w1 }' data$year.csv > date$year.txt break else want1=`expr $want1 + 1` fi done #●最高気温を抜き出す。 want2=1 while : do high=`awk -F"," -v w2=$want2 '{ print $w2 }' head$year.txt` if [ "$high" = '最高気温(℃)' ] then awk -F"," -v w2=$want2 '{ print $w2 }' data$year.csv > high$year.txt break else want2=`expr $want2 + 1` fi done #●平均気温を抜き出す。 want3=1 while : do ave=`awk -F"," -v w3=$want3 '{ print $w3 }' head$year.txt` if [ "$ave" = '平均気温(℃)' ] then awk -F"," -v w3=$want3 '{ print $w3 }' data$year.csv > ave$year.txt break else want3=`expr $want3 + 1` fi done #3つのテキストファイルを横並びになるように統合する。 paste date$year.txt high$year.txt ave$year.txt > newdata$year.txt #ヘッダーを除去(6行目を削除)し、上書き保存をする。 sed -i -e "1,6d" newdata$year.txt #各年の夏日だけを集めたファイルを作る。 awk '$2>25{print}' newdata$year.txt > natsubi$year.txt #各年の最初の夏日を集めたファイルを作る。 sed -n 1p natsubi$year.txt > first$year.txt touch natsubi.txt cat first$year.txt >> natsubi.txt year=`expr $year + 1` done #必要要素を抜き出したファイルが完成したので、この作業を終える。 #日付順に並べ替え、同日の場合は平均気温の高い順に並べる。 sort -k2,2n -k3,3n -t '/' -k 3r natsubi.txt > soooort.txt #位・年・月・日を表示させる。 awk -F'[/ \t]+' '{ print NR"位 " $1"年" $2"月" $3"日 " $4"度" }' soooort.txt > rank.txt awk '{ printf "%-7s %-15s %-6s\n",$1,$2,$3 }' rank.txt #大量にできたtxtファイルにより、繰り返してスクリプトの実行が出来ないため、削除する。 rm *.txt