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[@]}"