$META_DB -N -e "use web_boss_rainbow; select iDsId, sDbname, sHost, sPort, sNameServiceKey,sDriver from t_boss_v2_page_datasource;">${sDataFile} sed -i 's/ /,/g' ${sDataFile} :>${loadFn} i=1 while read line do ((i++)) iDsId=`echo $line|awk -F ',' '{print $1}'` sDbname=`echo $line|awk -F ',' '{print $2}'` sHost=`echo $line|awk -F ',' '{print $3}'` sPort=`echo $line|awk -F ',' '{print $4}'` sNameServiceKey=`echo $line|awk -F ',' '{print $5}'` sDriver=`echo $line|awk -F ',' '{print $6}'` if [ -n "$sNameServiceKey" ]; then zkname $sNameServiceKey |awk '{print iDsId","sDbname","$1","$2}' iDsId="$iDsId" sDbname="$sDbname">>${loadFn} else echo $iDsId","$sDbname","$sHost","$sPort>>${loadFn}
#直接用awk向文件中写入不成功,用echo写入文件 # awk '{print iDsId","sDbname","sHost","sPort}' iDsId="$iDsId" sDbname="$sDbname" sHost="$sHost" sPort="$sPort">>${loadFn} fi done <${sDataFile}
从mysql表中读取数据写入文件,并按行读取进行解析,并将原文件中的第一、二列和解析出来的第一二列写入文件中。
由于sDataFile中有为空的数据,之前的文件每列是按tab分割,所以先用sed将 替换为逗号,
awk可以用-F指定分隔符,将每行用awk分割并赋予变量
awk不接收外来文件或字符串输入时,直接用awk写入文件有问题,改用echo写入到文件里,暂时没有时间查原因,以后待查。