为什么这个 awk 语句不起作用?

为什么这个 awk 语句不起作用?
awk 'BEGIN { COLM_FMT = "%-8s, %-8s, %-8s, %-8s, %-8s, %-8s, %-8s, %-8s, %-8s, %-8s,    %-8s, %-8s, %-8s, %-8s,\n" }
           { printf COLM_FMT, ${totals[0]}, ${totals[1]}, ${totals[2]}, ${totals[3]}, ${totals[4]}, ${totals[5]}, ${totals[6]}, ${totals[7]},
           ${totals[8]}, ${totals[9]}, ${totals[10]}, ${totals[11]}, ${totals[12] }'

为什么上述 awk 语句给出以下错误:

‘awk:第 2 行附近语法错误’ ‘awk:第 2 行附近非法语句’

这是在 bash 脚本中。

答案1

您将 bash 变量放在 awk 脚本中,但将 awk 主体放在单引号中,这会阻止变量扩展。

您是否知道 bash 有一个 printf 命令?(help printf在 bash 提示符下输入)

fmt="%-8s, %-8s, %-8s, %-8s, %-8s, %-8s, %-8s, %-8s, %-8s, %-8s,    %-8s, %-8s, %-8s, %-8s,\n"
printf "$fmt" "${totals[@]}"

相关内容