1
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 的某些地方缺少反斜杠。我怎样才能解决这个问题?

4

2 回答 2

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'当它用双引号引起来时,它会正确展开。

于 2012-12-11T08:42:02.923 回答
0

转义$标志如下:

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

于 2012-12-11T08:29:52.167 回答