事前準備
Hi-netでダウンロードした
20200201000000_001440_85524.zip
のような一日分のzipファイルを解凍すると,
直下に
/Users/gen/2021/noise/2002/2020/02/01/01/01/V/M
というディレクトリが作成され,/M に
一分間のcntファイル×60×24が作られる.
※(/Users/gen/2021/noise/2002)で解凍した場合
なので,
$ mv /Users/gen/2021/noise/2002/"2020 29"/02/29/01/01/V/M/*.cnt /Users/gen/2021/noise/2002
のコマンドで
/Users/gen/2021/noise/2002
にcntファイルを移動
ファイル移動シェル
zip_2021.sh
# !/bin/bash
# 使い方
# ./zip_2.sh /home/takehiko/2021/noise/2107 2021 07
# 展開先 年 月
mv ${1}/${2}/${3}/01/01/01/V/M/*.cnt ${1}
for num in {1..9}
do
mv ${1}/${2}" ""("${num}")"/${3}/0${num}/01/01/V/M/*.cnt ${1}
done
for num in {10..31}
do
mv ${1}/${2}" ""("${num}")"/${3}/${num}/01/01/V/M/*.cnt ${1}
done
ls -1 | wc -l
こんなかんじで
/2002
に一月分のcntファイルをコピーする
あとは
channels.tbl
とwin.prm
も/2002
に入れておく
必要なファイル
channels.tbl
win.prm
1month_2.sh(本プログラムシェル)
win2sac1day_2.sh(一日分のsacファイルを作るシェル)
使い方
$ ./1month_2.sh 2003 7f73 N.MMOH
のように西暦・月(4桁),観測点・成分コード,観測点名を引数で入れて実行すれば
あとは勝手にひとつき分のsacファイルが作られるはず.
win.prmの中身
win.prm
.
channels.tbl
.
.
チャンネルテーブルの中身
channels.tbl
7f73 1 0 N.MMOH U 6 27 174.90 m/s 0.97 0.70 0 1.023e-07 36.2578 137.9898 539 0 0 Matsumoto
7f74 1 0 N.MMOH N 6 27 163.50 m/s 0.98 0.70 0 1.023e-07 36.2578 137.9898 539 0 0 Matsumoto
7f75 1 0 N.MMOH E 6 27 165.40 m/s 0.99 0.70 0 1.023e-07 36.2578 137.9898 539 0 0 Matsumoto
6063 1 0 N.MWDH U 6 27 169.70 m/s 1.00 0.70 0 1.023e-07 36.2118 137.9140 562 0 0 Matsumotowada
6064 1 0 N.MWDH N 6 27 170.10 m/s 0.96 0.70 0 1.023e-07 36.2118 137.9140 562 0 0 Matsumotowada
6065 1 0 N.MWDH E 6 27 167.80 m/s 0.95 0.70 0 1.023e-07 36.2118 137.9140 562 0 0 Matsumotowada
本プログラムのコード
1month_2.sh
# !/bin/bash
# 使い方
# ./1month.sh 2003 7f73 N.MMOH
for day in {1..9}
do
echo "${1}0${day}"
./win2sac1day_2.sh ${1}0${day} ${2} ${3}
done
for day in {10..31}
do
echo "${1}${day}"
./win2sac1day_2.sh ${1}${day} ${2} ${3}
done
echo "一月完了"
一日分のsacファイルを作るシェル
win2sac1day_2.sh
# !/bin/bash
# 使い方
# ./win2sac1day.sh 191201 7f73 N.MMOH
# cntファイルをwinファイルに変換
# 00時〜09時
for hour in {0..9}
do
for min in {0..9}
do
w32tow1 20${1}0${hour}0${min}0101VM.cnt 20${1}.0${hour}0${min}
done
for min in {10..59}
do
w32tow1 20${1}0${hour}${min}0101VM.cnt 20${1}.0${hour}${min}
done
done
# 10時〜24時
for hour in {10..23}
do
for min in {0..9}
do
w32tow1 20${1}${hour}0${min}0101VM.cnt 20${1}.${hour}0${min}
done
for min in {10..59}
do
w32tow1 20${1}${hour}${min}0101VM.cnt 20${1}.${hour}${min}
done
done
echo "cntからwinへの変換完了"
# 1時間分に結合
for hour in {0..9}
do
cat 20${1}.0${hour}?? > 0${hour}00_test
done
for hour in {10..23}
do
cat 20${1}.${hour}?? > ${hour}00_test
done
# 4時間に結合
cat 0000_test 0100_test 0200_test 0300_test > 03_test
cat 0400_test 0500_test 0600_test 0700_test > 07_test
cat 0800_test 0900_test 1000_test 1100_test > 11_test
cat 1200_test 1300_test 1400_test 1500_test > 15_test
cat 1600_test 1700_test 1800_test 1900_test > 19_test
cat 2000_test 2100_test 2200_test 2300_test > 23_test
# 一時間のwinファイルを一時間のsacファイルに変換
win2sac_32 03_test ${2} s > gomi.txt
mv ${3}.U.s ${1}0300_${3}_U.s
win2sac_32 07_test ${2} s > gomi.txt
mv ${3}.U.s ${1}0700_${3}_U.s
win2sac_32 11_test ${2} s > gomi.txt
mv ${3}.U.s ${1}1100_${3}_U.s
win2sac_32 15_test ${2} s > gomi.txt
mv ${3}.U.s ${1}1500_${3}_U.s
win2sac_32 19_test ${2} s > gomi.txt
mv ${3}.U.s ${1}1900_${3}_U.s
win2sac_32 23_test ${2} s > gomi.txt
mv ${3}.U.s ${1}2300_${3}_U.s
echo "sacへの変換完了"
# sacファイルを一日分にする
# バックアップ
cp ${1}0300_${3}_U.s ${1}0300_${3}_U_t.s
# 24時間分のsacファイルを結合
sac << EOF > /dev/null
r ${1}0300_${3}_U_t.s
merge ${1}0700_${3}_U.s
merge ${1}1100_${3}_U.s
merge ${1}1500_${3}_U.s
merge ${1}1900_${3}_U.s
merge ${1}2300_${3}_U.s
w ${1}0000_${3}_U_t.s
q
EOF
# 最後の処理(名前の変更)
sac << EOF > /dev/null
r ${1}0000_${3}_U_t.s
rmean
w ${1}_${3}_U.s
q
EOF
# ディレクトリの掃除
rm ${1}????_${3}_U.s
rm 20${1}.????
rm ????_test
rm ??_test
rm ${1}0000_${3}_U_t.s
rm ${1}0300_${3}_U_t.s
rm gomi.txt
echo "sac一日結合完了"