unix shell 读取配置文件

     又过了一个愉快而不值得回忆的一周,花了大半时间阅读MDB内存数据库的源代码,收获甚微;唯一的安慰是对unix下的shell编程稍有心得。
     需要把几十个配置文件的内容倒入数据库,简化的 xfer.HU.A3.cfg 配置文件格式:
[Common]
ClassName = xfer
InstanceName = hua3
LocalHost = 127.0.0.1
Host = 10.70.1.1
#Host = 127.0.0.1
TaskNum =
CheckSize=T
StatDir=/data01/work/xfer/stat
rename_spec=;N_GSM_HU_AL3;N_GSM_HU_AL4;
 
数据库中
xfer.HU.A3.cfg   AL   GSM    xfer   10.70.1.1       (null)    YES  N_GSM_HU_AL3;
 
注意点:AL、GSM 需要从字段中截取,其中'A'要转化成'AL',TaskNum没有值,'='左右可能有或没有空格,'#'是注释,'T' 需要转化成YES,rename_spec有多种可能,选第一个。
 
解决办法:
一个一个字段剪切到数据库中。
编写一个程序读取配置文件。
编写shell程序读取。
 
我选用了unix shell程序,顺便学习一下
 
echo $1|awk '{printf "%s\t",$1}'
 
case `echo $1 |awk -F. '{print substr($3,1,1)}'` in
A|a) echo 'AL'|awk '{printf "%s\t",$1}';;
H|h) echo 'HW'|awk '{printf "%s\t",$1}';;
N|n) echo 'NK'|awk '{printf "%s\t",$1}';;
S|s) echo 'SI'|awk '{printf "%s\t",$1}';;
*) echo 'Unkown'|awk '{printf "%s\t",$1}';;
esac
grep rename_spec $1|grep -v '#rename_spec'|awk -F= '{print $2}'|awk '{print $1}'|awk -F_ '{printf "%s\t", $2}'
grep Host $1|grep -v '#Host'|grep -v 'LocalHost'|grep -v '127'|awk -F= '{print $2}'|awk '{printf"%s\t", $1}'
 
grep TaskNum $1|grep -v '#TaskNum'|awk -F= '{print $2}'|awk '{printf "%s\t", $1}'
 
s=`grep CheckSize$1|grep -v '#CheckSize'|awk -F= '{print $2}'|awk '{print $1}'`
if test $s = F
then
   echo 'NO'|awk '{printf "%s\t",$1}'
else
   echo 'YES'|awk '{printf "%s\t",$1}'
fi
grep rename_spec $1|grep -v '#rename_spec'|awk -F= '{print $2}'|awk -F';' '{printf "%s;\t", $2}'

猜你喜欢

转载自andylin02.iteye.com/blog/836790