Hi-netでダウンロードした一日分のwinファイルをsacへ変換（一月分）

#事前準備
Hi-netでダウンロードした
``20200201000000_001440_85524.zip``
のような一日分のzipファイルを解凍すると，

直下に
``/Users/gen/2021/noise/2002/2020/02/01/01/01/V/M``
というディレクトリが作成され，/M に
一分間のcntファイル×６０×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ファイルが作られるはず．


#チャンネルテーブルの中身
```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.sh
#!/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ファイルを作るシェル

```win2sac1day_3.sh
#!/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への変換完了"

#１時間分に結合
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一日結合完了"
```