awk $(NF-1)中的语法错误 - 找不到NF-1命令

时间:2012-12-11 08:27:02

标签: unix awk

for INSTANCE in $INSTANCES
do
  ssh weblogic@${SERVER} "egrep \"^$SEARCHHOUR1:$SEARCHMIN1.*DEBUG.*LONG QUERY.* ms.\$|^$SEARCHHOUR2:$SEARCHMIN2.*DEBUG.*LONG QUERY.* ms.\$\" vgprod1/mw.log.$INSTANCE  | awk '{ $(NF-1)>=10000 }' "
done

错误:

NF-1: command not found
awk: cmd. line:1: { >=10000 }
awk: cmd. line:1:   ^ syntax error

我在Unix服务器上执行时遇到上述错误。我想我在AWK的某些地方缺少反斜杠。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

正如 sarathi 所述,您的问题是一个不带引号的$

如果你拆分命令可能更容易发现:

pattern="^$SEARCHHOUR1:$SEARCHMIN1.*DEBUG.*LONG QUERY.* ms.\$|^$SEARCHHOUR2:$SEARCHMIN2.*DEBUG.*LONG QUERY.* ms.\$"

for INSTANCE in $INSTANCES
do
  ssh weblogic@${SERVER} "egrep '$pattern' vgprod1/mw.log.$INSTANCE  | awk '\$(NF-1) > 1000'"
done

另请注意,egrep '$pattern'用双引号括起来时会正确展开。

答案 1 :(得分:0)

退出$符号,如下所示:

\$

中的

awk '{ \$(NF-1)....