AWK语法错误 - 导致它的原因是什么?

时间:2011-12-12 12:24:22

标签: bash awk

我有简单的bash脚本:

#!/bin/sh
column=${1:-1}
awk ' {colawk='$column'+2; print $colawk}'
awk '(x=4; print $x)'

但我收到了错误:

awk: (x=4; print $x)
awk:     ^ syntax error
awk: cmd. line:1: (x=4; print $x)
awk: cmd. line:1:                ^ unexpected newline or end of string

为什么呢?上一行中的代码有效。

2 个答案:

答案 0 :(得分:5)

AWK程序是一系列模式操作对,写为:

condition { action }

其中condition通常是表达式,action是一系列命令。

print不是表达式而是声明,所以它是语法错误符合预期。

答案 1 :(得分:2)

您的问题是使用括号而不是大括号。尝试:

awk '{x=4; print $x}'

相反,如下面的记录:

pax$ echo a b c d e | awk '(x=4; print $x)'
awk: cmd. line:1: (x=4; print $x)
awk: cmd. line:1:     ^ syntax error
awk: cmd. line:2: (x=4; print $x)
awk: cmd. line:2:                ^ unexpected newline or end of string

pax$ echo a b c d e | awk '{x=4; print $x}'
d