awk脚本中的"BEGIN块必须有一个动作部分"错误

Wae*_*ael 12 bash awk

这是我的代码:

#!/bin/sh

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

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

 {
  if($0 ~ /Starting/) 
  { 
    print "The bill import has been Started on "$1 " " $2
  }

}'  $filename > report.txt
Run Code Online (Sandbox Code Playgroud)

当我执行它时,我收到以下错误:

BEGIN块必须有一个动作部分

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

fed*_*qui 18

发生这种情况是因为你的开口花括号位于下一行.

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

BEGIN {
print "Processing file: " filename 
}
Run Code Online (Sandbox Code Playgroud)

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

/Starting/ {print "The bill import has been Started on "$1 " " $2}
Run Code Online (Sandbox Code Playgroud)

也就是说,if ()并且$0是隐含的,因此可以跳过它们.