ここで書かれていることを実行したことによる、パソコンの故障等の問題には一切責任を負えないことを理解した上で、ご利用下さい。
〇 前回の「gpccデータのpaste」の部分で、gawkの繰り返し作業を年数分自動化する方法をまず自分で考えてください、と提示しましたが、一応一例ではありますが、自分なりにつくってみました。たぶんディレクトリやファイル名の設定が上手くいってたら、うまく動くはずです。早速cshスクリプトを提示します。
#!/bin/csh -f
set gdir = '/mnt/mntsda1/gpcc/full_data_ver4/gpcc_05_'
set gname = '/gpcc_full_data_v004_05_degree_'
set gout = './rainwor'
#directory
@ fyear = 1901
@ eyear = 2007
#file
@ ryear = 1901
@ lyear = 2007
#
while ( ${fyear} <= ${eyear} )
@ myear = ${fyear} + 9
while ( ${ryear} <= ${myear} )
@ month = 1
while ( ${month} <= 12 )
if ( (${fyear} == 2001) && (${ryear} <= 2007) && (${month} < 10) ) then
gawk '{if(NR>=15){print $1;}}' \
${gdir}${fyear}_${eyear}${gname}0${month}${ryear}\
> ${gout}${ryear}0${month}
else if ( (${fyear} == 2001) && (${ryear} <= 2007) && (${month} >= 10) ) then
gawk '{if(NR>=15){print $1;}}' \
${gdir}${fyear}_${eyear}${gname}${month}${ryear}\
> ${gout}${ryear}${month}
else if ( ${fyear} < 2001 && ${month} < 10 ) then
gawk '{if(NR>=15){print $1;}}' \
${gdir}${fyear}_${myear}${gname}0${month}${ryear}\
> ${gout}${ryear}0${month}
else if ( ${fyear} < 2001 && ${month} >= 10 ) then
gawk '{if(NR>=15){print $1;}}' \
${gdir}${fyear}_${myear}${gname}${month}${ryear}\
> ${gout}${ryear}${month}
endif
@ month = ${month} + 1
end
@ ryear = ${ryear} + 1
end
@ fyear = ${fyear} + 10
end
これから上のスクリプトの説明をしていくと、最初の「set」や「@」で始まる部分は変数の定義をしている部分であり、「@」の部分でディレクトリ(dyrectory)とファイル(file)に分かれているのは、ディレクトリとファイル名の数字(年)の増加分が異なるためである。
まず「gpcc_05_1901_1911」のようなディレクトリを探す繰り返し作業が生じるため、while~endで、1901,1911,1921...2001まで増加させるwhile文を作成する。この部分はディレクトリの名前の最初の年を表す部分であり、次の年を表す部分を定義するため「@ myear = ${fyear} + 9」という行を追加しました。
次にファイルを探す作業に入るわけですが、この部分前回説明した部分とほぼ一緒なので割愛します。ただし、ディレクトリの名前の部分で「@ myear = ${fyear} + 9」という行を追加したわけですが、「gpcc_05_2001_2007」に関しては数字を単に9足せばいいというわけにはいかないため、if文で場合分けを行っています。
さらに、今回のキーワードとなる部分として、行が長くなると見にくいといった問題が生じるため、改行しても文章が続いていますよ、という折り返し作業を行っています。それが「\」であり、これを行の最後に付加することで、行の折り返しをすることが出来ます。
流れとしては
while(ディレクトリ名の年の繰り返し)
while(ファイル名の年の繰り返し)
while(ファイル名の月の繰り返し)
if(年、月による場合分け)
作業コマンド
endif
end
end
end
という形になっています、研究以外のところでの作業効率の向上を図り、各研究のより深い考察につながる一助となれば、このページを描いた甲斐があるというものです。
最終更新:2008年11月05日 10:33