#!/bin/bash #2008~2017年までのファイルを年順に読み込ませる year=2008 while [ $year -le 2017 ] do file=data$year.csv #最初の6行を除いた7行目からのファイルを作成 tail -n +7 $file > edited$year.csv #awk -F "," '{print 1}' $file > judge.txt #j=`grep -e "$year/01/01" -n judge.txt #tail -n +j $file > edited$year.csv #これを実行したかったです、これを実行することができたら、ヘッダーの行数にかかわらず実行できるスクリプトになったはずです。 #grep '$year/' $file > edited$year.csv #これはもう一つのシンプルな案ですが、無念にもエラーでした。 file0=edited$year.csv #データの4行目のみを切り出し、別のファイルに一旦書き出す sed -n '4p' $file > category$year.csv file1=category$year.csv #そのファイルが何コラムで構成されているか数え、変数として定義 MAX=`awk -F "," '{print NF}' $file1` i=1 until [[ $i = $MAX ]] do koumoku=`cut -f $i -d "," $file1` #年月日のある列を抜き出し別のファイルに書き出す if [ $koumoku = '年月日' ] then cut -f $i -d "," $file0 > date$year.txt i=`expr $i + 1` #最高気温のある列を抜き出し別のファイルに書き出す elif [ $koumoku = '最高気温(℃)' ] then cut -f $i -d "," $file0 > highest$year.txt i=`expr $i + 1` #平均気温のある列を抜き出し別のファイルに書き出す elif [ $koumoku = '平均気温(℃)' ] then cut -f $i -d "," $file0 > avarage$year.txt i=`expr $i + 1` else i=`expr $i + 1` fi done #年月日・最高気温・平均気温のファイルを水平方向に結合 paste date$year.txt highest$year.txt avarage$year.txt > date_highest_avarage$year.txt file2=date_highest_avarage$year.txt #夏日すべてを抽出したファイルを作成 awk '$2>=25 { print $1","$2","$3}' $file2 > summerdays$year.csv file3=summerdays$year.csv #年月日順に並び替え、各年の最初の夏日のみ抽出し一つのファイルにまとめる sed -n '1p' $file3 >> firstsummerdays.csv year=`expr $year + 1` done #"/"を","に置換 tr / , < firstsummerdays.csv > firstsummerdays2.csv #月日順に並び替えた後、平均気温の高い順に並べる sort -t"," -k 2n,2 -k 3n,3 -k 5gr,5 firstsummerdays2.csv > narabikae.csv #順位と年月日、度を書き込む awk -F "," '{print NR"位 " $1"年"$2"月"$3"日 "$4"度"}' narabikae.csv > resolt1.csv cat resolt1.csv #ファイルの削除 rm *.txt year=2008 while [ $year -le 2017 ] do rm edited$year.csv rm category$year.csv rm summerdays$year.csv year=`expr $year + 1` done rm firstsummerdays.csv rm firstsummerdays2.csv rm narabikae.csv rm resolt1.csv