"BEGIN blocks must have an action part" awk 脚本错误

"BEGIN blocks must have an action part" error in awk script

这是我的代码:

#!/bin/sh

filename=$(/usr/bin/find -name "INSTANCE-*.log")
echo "filename is " $filename

awk '
 BEGIN
 {   
   print "Processing file: " filename 
 }

 {
  if([=11=] ~ /Starting/) 
  { 
    print "The bill import has been Started on " " " 
  }

}'  $filename > report.txt

当我执行它时,出现以下错误:

BEGIN blocks must have an action part

我的 BEGIN 块有一个 print 语句,所以它有一个动作部分。我在这里错过了什么?

发生这种情况是因为您的左大括号在下一行。

所以你需要做的就是这样写BEGIN { ...

BEGIN {
print "Processing file: " filename 
}

另请注意,主块可以重写为:

/Starting/ {print "The bill import has been Started on " " " }

也就是说,if ()[=14=] 是隐含的,因此可以跳过。