かわにゅーす
さざえさん
新年を迎えて、さざえさんの2005年バージョンを作ると。
これまではファイルを手書きでいちいちいぢいぢ書き換えていたけど、
面倒くさいのでもうちょっとスマートなやり方を考えましょう。
perl をくむほどでもないと思ったので、shell script で挑戦。
--V-- 05/01/12.06:26
ミッション・ポシブル
a) さざえさんファイルを1年分作る。
さざえさんファイルはほとんど同じだけど、
(略)
title さざえさんとじゃんけん 12/26
open_date 04/12/19 00:00
close_date 04/12/26 18:00
(略)
の部分だけ、変えなければならないので、それを自動生成する。
b) 結果一覧用に
-------------
sazae1128 11/28
sazae1205 12/5
sazae1212 12/12
sazae1219 12/19
sazae1226 12/26
-------------
というファイルがいるので、これも自動で行を一年分追加する
--V-- 05/01/12.06:26
でと、2時間ほど格闘した結果次のようにしたと。
1) テンプレートファイルを用意する
その中では次のように書く
(略)
||data
title さざえさんとじゃんけん %ZENKAKU
open_date %OPEN 00:00
close_date %CLOSE 18:00
(略)
2) で、作った以下のshellを実行すると。
--V-- 05/01/12.06:26
#!/bin/csh -f
set DATE=20050116
set END=20051231
set DAY=`date -d $DATE "+%d"`
set MONTH=`date -d $DATE "+%m"`
set j=`date -d $DATE "+%j"`
set y=`date -d $DATE "+%y"`
set YMD_P=`date -d "$DATE 7 day ago" "+%y¥/%m¥/%d"`
set YMD=`date -d $DATE "+%y¥/%m¥/%d"`
set md=`date -d $DATE "+%m%d"`
while ($y == 05)
set ZENKAKU=`date -d $DATE "+%m/%d" `
set ZENKAKU=`echo $ZENKAKU | sed 's/01/1/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/02/2/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/03/3/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/04/4/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/05/5/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/06/6/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/07/7/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/08/8/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/09/9/g'`
--V-- 05/01/12.06:27
set ZENKAKU=`echo $ZENKAKU | sed 's/0/0/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/1/1/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/2/2/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/3/3/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/4/4/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/5/5/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/6/6/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/7/7/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/8/8/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/9/9/g'`
set ZENKAKU=`echo $ZENKAKU | sed 's/¥////g'`
echo $ZENKAKU
sed -e "s/%ZENKAKU/$ZENKAKU/g" sazae_template | sed -e "s/%OPEN/$YMD_P/g" | sed -e "s/%CLOSE/$YMD/g" > sazae$md
echo "sazae$md $ZENKAKU" >> sazae01
set YMD_P=`date -d $DATE "+%y¥/%m¥/%d"`
set DATE=`date -d "$DATE 7 day" "+%m/%d/%y"`
set YMD=`date -d $DATE "+%y¥/%m¥/%d"`
set y=`date -d $DATE "+%y"`
set md=`date -d $DATE "+%m%d"`
end
--V-- 05/01/12.06:27
これで、
%ZENKAKU が全角の日付、1/16とかに、
%OPEN が受付開始日、 05/01/09 に、
%CLOSE が受付終了日、 05/01/16 に設定できますよと。
shellプログラムはあまりやらないから手間取ったす。
たとえば、7日後の日付なんて、
date -d "$DATE 7 day" "+%m/%d/%y"
で求められるんだなーとか感心した。
7日前なら、
date -d "$DATE 7 day ago" "+%m/%d/%y"
へえへえへえ。
半角全角変換はこんなべたな方法しかないのかなあ。
tr は使えなさそうだし。。
おなじようなのが二つあるのは、
01/10 を01/10じゃなくて、1/10のように変換したいから。
--V-- 05/01/12.06:36
思えばさざえさんも進化したもんだ。
昔は結果ファイルを手集計しなくちゃならなかったし。
あれは面倒くさかった。
にしても、、さざえさん初めてから10年くらい経ってるような気もしないではない。
・・始めたの何年だっけか?
大学時代に始めてるから、、たぶん95年か96年・・
さすがにこんなに続けるとはおもわなんだなあ。
▽ フォローする
かわにゅーすトップ
ゆめいろーどにもどろと