2015-08-11 3 views
1

Я пытаюсь передать следующую команду, чтобы «наблюдать», чтобы периодически повторять команду.watch command - обработка котировок

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 

Как успешно пройти эту команду 'смотреть'? Благодаря!

ответ

4

Это из-за выражения $(NF-1). Вам нужно, чтобы избежать $ так, что она интерпретируется в команде awk, а не до, во время расширения:

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

Это работало. Благодаря! – user3481798

+0

Добро пожаловать! Поскольку вы новичок здесь, не забудьте отметить ответ, принятый, когда это помогло (в большинстве) в понимании и решении проблемы. См. Также [Как принимается ответ?] (Http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235) – fedorqui

1

Я думаю, что ваш $ будет замещен.

часы -n 5 "Grep 'Foo бар' log_file.log | AWK '\ $ (NF-1) == 0'"

Смежные вопросы