bash - awk 脚本中的 "BEGIN blocks must have an action part"错误

标签 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 blocks must have an action part

我的 BEGIN block 有一个 print 语句,所以它有一个 Action 部分。我在这里缺少什么?

最佳答案

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

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

BEGIN {
print "Processing file: " filename 
}

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

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

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

关于bash - awk 脚本中的 "BEGIN blocks must have an action part"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27776583/

相关文章:

bash - 检测进程何时完成(但未退出)

bash - Grep 一行中的第一个数字

awk - 如何在awk捕获的单元格内排序

linux - 使用awk解析配置

bash - 用 jq 重新组织对象字段

bash - 如何保存ssh登录欢迎横幅并断开连接

linux命令行使用提供的参数重命名所有文件

xml - 使用 Shell 更新 XML 属性的值

shell - 如何在 unix 中将一个 shell 脚本的输出捕获到另一个

bash - 如何附加到 bash 循环内的现有字符串变量?