Board logo

标题: 是BUG吗?长命令套到if的括号中会出错 [打印本页]

作者: pooronce     时间: 2008-3-18 18:51    标题: 是BUG吗?长命令套到if的括号中会出错


>%lfdat%s.xls gawk 'BEGIN{FS=OFS="\t"} NR==FNR{a[$1]=$2;b[$1]=$3} NR^>FNR{if (FNR==1)print; else {if ($1!~/^^u[ks]\.com$^|eu\.com$/) {sum=0;sz=0;if ($2~/^^[0-9]+$/){sum+=$2;sz+=1;} if ($5~/^^[0-9]+$/){sum+=$5;sz+=1} if ($6~/^^[0-9]+$/){sum+=$6;sz+=1} if ($7~/^^[0-9]+$/){sum+=$7;sz+=1} if ($8~/^^[0-9]+$/){sum+=$8;sz+=1} if ($9~/^^[0-9]+$/){sum+=$9;sz+=1} if ($12~/^^[0-9]+$/){sum+=$12;sz+=1} if ($13~/^^[0-9]+$/){sum+=$13;sz+=1} if ($14~/^^[0-9]+$/){sum+=$14;sz+=1} if ($15~/^^[0-9]+$/){sum+=$15;sz+=1} if ($16~/^^[0-9]+$/){sum+=$16;sz+=1} if ($17~/^^[0-9]+$/){sum+=$17;sz+=1} if ($18~/^^[0-9]+$/){sum+=$18;sz+=1} if ($26=="Error" ^|^| $27=="Error") {$26=a[$1];$27=b[$1]} if (sz!=0) $54=sum/sz; if ($43~/^^[Yy]$/) {$41="F";$42="F"}print}}}' al.xls %lfdat:~-8%s.bak


IF NOT %week%==星期一 goto :skipthis
>%ldate%s.xls gawk 'BEGIN{FS=OFS="\t"} NR==FNR{a[$1]=$2;b[$1]=$3} NR^>FNR{if (FNR==1)print; else {if ($1!~/^^u[ks]\.com$^|eu\.com$/) {sum=0;sz=0;if ($2~/^^[0-9]+$/){sum+=$2;sz+=1;} if ($5~/^^[0-9]+$/){sum+=$5;sz+=1} if ($6~/^^[0-9]+$/){sum+=$6;sz+=1} if ($7~/^^[0-9]+$/){sum+=$7;sz+=1} if ($8~/^^[0-9]+$/){sum+=$8;sz+=1} if ($9~/^^[0-9]+$/){sum+=$9;sz+=1} if ($12~/^^[0-9]+$/){sum+=$12;sz+=1} if ($13~/^^[0-9]+$/){sum+=$13;sz+=1} if ($14~/^^[0-9]+$/){sum+=$14;sz+=1} if ($15~/^^[0-9]+$/){sum+=$15;sz+=1} if ($16~/^^[0-9]+$/){sum+=$16;sz+=1} if ($17~/^^[0-9]+$/){sum+=$17;sz+=1} if ($18~/^^[0-9]+$/){sum+=$18;sz+=1} if ($26=="Error" ^|^| $27=="Error") {$26=a[$1];$27=b[$1]} if (sz!=0) $54=sum/sz; if ($43~/^^[Yy]$/) {$41="F";$42="F"}print}}}' al.xls %ldate:~-8%s.bak

>%ldat1%s.xls gawk 'BEGIN{FS=OFS="\t"} NR==FNR{a[$1]=$2;b[$1]=$3} NR^>FNR{if (FNR==1)print; else {if ($1!~/^^u[ks]\.com$^|eu\.com$/) {sum=0;sz=0;if ($2~/^^[0-9]+$/){sum+=$2;sz+=1;} if ($5~/^^[0-9]+$/){sum+=$5;sz+=1} if ($6~/^^[0-9]+$/){sum+=$6;sz+=1} if ($7~/^^[0-9]+$/){sum+=$7;sz+=1} if ($8~/^^[0-9]+$/){sum+=$8;sz+=1} if ($9~/^^[0-9]+$/){sum+=$9;sz+=1} if ($12~/^^[0-9]+$/){sum+=$12;sz+=1} if ($13~/^^[0-9]+$/){sum+=$13;sz+=1} if ($14~/^^[0-9]+$/){sum+=$14;sz+=1} if ($15~/^^[0-9]+$/){sum+=$15;sz+=1} if ($16~/^^[0-9]+$/){sum+=$16;sz+=1} if ($17~/^^[0-9]+$/){sum+=$17;sz+=1} if ($18~/^^[0-9]+$/){sum+=$18;sz+=1} if ($26=="Error" ^|^| $27=="Error") {$26=a[$1];$27=b[$1]} if (sz!=0) $54=sum/sz; if ($43~/^^[Yy]$/) {$41="F";$42="F"}print}}}' al.xls %ldat1:~-8%s.bak

:skipthis
如上,后面两个文件的处理,如果直接用IF %week%==星期一 然后括号套住,就总是会出错,提示“此时不应有print“,print位置改过多次,皆无效。后来把if的套子修改成上面那NOT并skip过就正常了。 百思不得其解,请问这个是cmd的一个bug吗?或者还是我自己没处理好呢?

另,请问上面的命令能优化吗,其作用是求某些不连续范围的格子里,将存在数据的求平均值,类似Excel里的average命令。然后将al里的部分匹配到固定列的Error的地方。

麻烦各位帮助看一下,谢谢