调用用户定义函数时出现awk语法错误
我得到一个语法错误:调用用户定义函数时出现awk语法错误,awk,Awk,我得到一个语法错误: /usr/xpg4/bin/awk: file "./test.awk": line 64: syntax error Context is: >>> printf (", %s", date_value ( $3, fmt_yyyymmdd ) ); <<< 我无法理解语法错误在哪里。 一个非常相似的语句(只有一个参数)不会产生语法错误,并且工作正常 printf (", %s", char_value ( $2) );
/usr/xpg4/bin/awk: file "./test.awk": line 64: syntax error
Context is:
>>> printf (", %s", date_value ( $3, fmt_yyyymmdd ) ); <<<
我无法理解语法错误在哪里。
一个非常相似的语句(只有一个参数)不会产生语法错误,并且工作正常
printf (", %s", char_value ( $2) );
对我来说,awk似乎不允许调用参数为用户定义变量或文字的用户定义函数,也不允许调用具有多个参数的用户定义函数。不幸的是,我并不精通awk。我认为问题在于如何调用函数。在用户定义函数中,名称和参数之间不能存在任何空格,请使用:
printf (", %s", date_value($22, fmt_yyyymmdd ) );
如果您将这些片段放在一个单独的最小示例中再现问题,我们(可能还有您)将更容易发现错误。您的
printf
是否在操作中?是的,这就是问题所在,OP断言char\u value($2)
没有此问题是错误的。顺便说一句,awk的语法应该是printf“,%s”,date_value($22,fmt_yyyymmdd)
,因为awk不是C,所以不需要尾随分号,printf
是一个内置函数,而不是一个函数,所以在参数中围绕它的参数只是误导。我已经相应地修改了代码,并将对其进行测试。
printf (", %s", char_value ( $2) );
printf (", %s", date_value($22, fmt_yyyymmdd ) );