awk使用实例一则

$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写入到文件里,暂时没有时间查原因,以后待查。

原文地址:https://www.cnblogs.com/yitianke/p/4940754.html