事前準備
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ファイルを移動
※解凍したタイミングにもよるが,太字を対応させるように手動で入力
/Users/gen/2021/noise/2002/"2020 29"/02/29/01/01/V/M/*.cnt
こんなかんじで
/2002
に一月分のcntファイルをコピーする
あとは
channels.tbl
も/2002
に入れておく
必要なファイル
channels.tbl
1month.sh(本プログラムシェル)
win2sac1day_3.sh(一日分のsacファイルを作るシェル)
使い方
$ ./1month.sh 2003 7f73 N.MMOH_U
のように西暦・月(4桁),観測点・成分コード,観測点名を引数で入れて実行すれば
あとは勝手にひとつき分のsacファイルが作られるはず.
チャンネルテーブルの中身
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
本プログラムのコード
# !/bin/bash
# 使い方
# ./1month.sh 2003 7f73 N.MMOH_U
for day in {1..9}
do
echo "${1}0${day}"
./win2sac1day_3.sh ${1}0${day} ${2} ${3}
done
for day in {10..31}
do
echo "${1}${day}"
./win2sac1day_3.sh ${1}${day} ${2} ${3}
done
echo "一月完了"
一日分のsacファイルを作るシェル
# !/bin/bash
# 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
# 一時間のwinファイルを一時間のsacファイルに変換
for hour in {0..9}
do
cat 0${hour}00_test | shmdump -tq - ${2} | wintosac -t channels.tbl ${2}
done
for hour in {10..23}
do
cat ${hour}00_test | shmdump -tq - ${2} | wintosac -t channels.tbl ${2}
done
echo "sacへの変換完了"
# sacファイルを一日分にする
# バックアップ
cp ${1}0000_${3}.s ${1}0000_${3}_t.s
# 24時間分のsacファイルを結合
sac << EOF > /dev/null
r ${1}0000_${3}_t.s
merge ${1}0100_${3}.s
merge ${1}0200_${3}.s
merge ${1}0300_${3}.s
merge ${1}0400_${3}.s
merge ${1}0500_${3}.s
merge ${1}0600_${3}.s
merge ${1}0700_${3}.s
merge ${1}0800_${3}.s
merge ${1}0900_${3}.s
merge ${1}1000_${3}.s
merge ${1}1100_${3}.s
merge ${1}1200_${3}.s
merge ${1}1300_${3}.s
merge ${1}1400_${3}.s
merge ${1}1500_${3}.s
merge ${1}1600_${3}.s
merge ${1}1700_${3}.s
merge ${1}1800_${3}.s
merge ${1}1900_${3}.s
merge ${1}2000_${3}.s
merge ${1}2100_${3}.s
merge ${1}2200_${3}.s
merge ${1}2300_${3}.s
w ${1}0000_${3}_t.s
q
EOF
# 最後の処理(名前の変更)
sac << EOF > /dev/null
r ${1}0000_${3}_t.s
rmean
w ${1}_${3}.s
q
EOF
# ディレクトリの掃除
rm ${1}????_${3}.s
rm 20${1}.????
rm ????_test
rm ${1}0000_${3}_t.s
echo "sac一日結合完了"