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

时间:2015-01-05 09:27:44

标签: 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

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

  

BEGIN块必须有一个动作部分

我的BEGIN块有一个print语句,因此它有一个动作部分。我在这里缺少什么?

1 个答案:

答案 0 :(得分:16)

这是因为你的开口大括号在下一行。

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

BEGIN {
print "Processing file: " filename 
}

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

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

也就是说,if ()$0是隐式的,因此可以跳过它们。