#!/bin/bash for loop in `ls data*.csv` #data~.csv.という名前のファイルで以下の作業を繰り返すように指示を与えた。 do max=`sed -n '4,4p' $loop | awk -F ',' '{print NF}'` number=1 while test $number -le $max do sed -n '4,4p' $loop | cut -d , -f $number > kadai1-1.txt karamu=`grep -ci "最高気温(℃)" kadai1-1.txt` if [[ $karamu = 1 ]] ; then awk -F"," -v number=$number '{print $1,$number}' $loop > datesaikou.txt fi number=`expr $number + 1` done number=1 while test $number -le $max do sed -n '4,4p' $loop | cut -d , -f $number > kadai1-1.txt karamu=`grep -ci "平均気温(℃)" kadai1-1.txt` if [[ $karamu = 1 ]] ; then awk -F"," -v number=$number '{print $number}' $loop > ave.txt fi number=`expr $number + 1` done #4行目を抜き出して、,で区切られたカラム数をそれぞれのデータごとに調べ、その数を変数maxとした。各カラムを順に一列に並び替えたものを新しいファイルに書き込み、最高気温(℃)と書かれたカラムを1、それ以外のものを0と表示できるようにした。そしてifを用いて1となるときに年月日が書かれた1列目と該当する列を抜き出すよう指示を与えた。平均温度でも同様の作業を行った。 paste datesaikou.txt ave.txt > matome.txt #年月日、最高気温のファイルと平均気温のファイルを統合した。 tail -n +7 matome.txt > matome1.txt #統合したファイルの各年の上から6行を除外した。 awk '$2>=25 {print $1","$2","$3}' matome1.txt > natubi.txt #最高気温が25度以上となる行を抜き出した。 awk -F"/" 'NR==1 {print $1","$2","$3}' natubi.txt >> date.csv #各年の1行目のみを抽出した。 done sort -k 2n,2 -t"," -k 3n,3 -k 5gr,5 date.csv > sortdate.csv rm date.csv #月日順に並び替え、同じ日の場合は平均気温の高い順に並び替えた。 awk -F"," '{print NR"位"$1"年"$2"月"$3"日"$4"℃"}' sortdate.csv > rank.csv cat rank.csv #位年月日の文字を挿入し、完成したファイルを表示できるようにした。 rm *.txt rm sortdate.csv rm rank.csv #ファイルを削除した。