看命令 - 处理报价

时间:2015-08-11 14:56:15

标签: linux unix awk grep

我正在尝试将以下命令传递给'watch',以便定期重复命令。

grep "foo bar" log_file.log | awk '$(NF-1) == 0'

然而,当我这样做时:

watch -n 5 "grep \"foo bar\" log_file.log | awk '$(NF-1) == 0'"

我收到以下错误:

awk: cmd. line:1:  == 0<br>
awk: cmd. line:1:  ^ syntax error

如何成功将此命令传递给“观看”?谢谢!

2 个答案:

答案 0 :(得分:5)

这是因为$(NF-1)表达式。您需要转义$以便在awk命令中解释它,而不是在扩展期间解释它:

watch -n 5 "grep \"foo bar\" log_file.log | awk '\$(NF-1) == 0'"
                                                 ^

答案 1 :(得分:1)

我认为您的$正在被替换。

观看-n 5“grep'foo bar'log_file.log | awk'\ $(NF-1)== 0'”