你能帮我解决以下语法错误吗?当我在“if”之后有一个语句时,该程序可以运行。但是当我在“if”之后想要两个语句时,我会收到错误。 谢谢, 卡尔。
BEGIN { FS = “,” }
{ if ( $2 == “” && ( $6 == “Install” || $6 == “Add” || $6 == “New”) )
{
print $1″,”$2″,”$3″,”$4″,”$5″,”$6″,”$7″,”$8″,”$9 > “Email_Asset_Add” ;
print “$8″,”$9 > “Email_Asset_Add_Mitul” ;
}
else if ( $2 == “” && ( $6 == “Change” || $6 == “Update” || $6 == “Existing”) )
{
print $1″,”$2″,”$3″,”$4″,”$5″,”$6″,”$7″,”$8″,”$9 > “Email_Asset_Update” ;
print “$8″,”$9 > “Email_Asset_Update_Mitul” ;
}
}
awk -f awk_program test_email awk:第23行附近的字符串中的换行符 awk:第28行附近的字符串中的换行符
答案 0 :(得分:2)
我建议使用printf()
简化代码。
例如,这个:
print $1”,”$2”,”$3”,”$4”,”$5”,”$6”,”$7”,”$8”,”$9 > “Email_Asset_Add” ;
可能会成为这个:
printf("%s,%s,%s,%s,%s,%s,%s,%s,%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9) > “Email_Asset_Add”;
更容易看到事情的方式。
事实上,整个过程可以通过一些重构来实现:
BEGIN {
FS = “,”;
}
{
if ( $2 == “” && ( $6 == “Install” || $6 == “Add” || $6 == “New”) ) {
output="Email_Asset_Add";
} else
if ( $2 == “” && ( $6 == “Change” || $6 == “Update” || $6 == “Existing”) ) {
output="Email_Asset_Update";
} else {
next;
}
printf("%s,%s,%s,%s,%s,%s,%s,%s,%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9) > output;
printf("%s,%s\n", $8,$9); > “Email_Asset_Update_Mitul” ;
}