2017-01-01 13 views
3

Я использую Raspbian (на самом деле это HASSBian) на RPi3. Я пытаюсь разобрать выход из Netcat:Почему я не могу передать stdout из netcat в awk?

[email protected]:~ $ netcat localhost 1099 | grep -i on 
01/01 22:57:29 Rx RF HouseUnit: C2 Func: On 
01/01 22:57:30 Rx RF HouseUnit: B4 Func: On 
01/01 22:57:31 Rx RF HouseUnit: B5 Func: On 
01/01 22:57:32 Rx RF HouseUnit: B6 Func: On 
01/01 22:57:40 Rx RF HouseUnit: C1 Func: On 
01/01 22:57:47 Rx RF HouseUnit: C2 Func: On 
01/01 22:58:03 Rx RF HouseUnit: C2 Func: On 
01/01 22:58:04 Rx RF HouseUnit: C1 Func: On 

, но когда я пытаюсь трубы это AWK, чтобы вытащить два поля, которые я хочу, я не получаю никакого вывода. Это выглядит так:

[email protected]:~ $ netcat localhost 1099 | grep -i on | awk '{print $6,$8}' 

Я ошибаюсь, думая, что это должно сработать?

[email protected]:~ $ uname -a 
Linux raspberrypi 4.4.38-v7+ #938 SMP Thu Dec 15 15:22:21 GMT 2016 armv7l GNU/Linux 
+2

Пожалуйста, обратите внимание на: [Что я должен делать, когда кто-то отвечает на мой вопрос?] (http://stackoverflow.com/help/someone-answers) – Cyrus

ответ

2

Выход grep полностью буферизуется, когда не записывается на терминал. Используйте --line-buffered флаг Grep

netcat localhost 1099 | grep --line-buffered -i on | awk '{print $6,$8}' 

Для программ, которые не позволяют вам контролировать свое поведение буферизации вывода, то программа может быть обернута с командой stdbuf

+0

Почему бы не предложить не использовать 'grep' и использовать только' awk'? давай, сделай усилие! –

+2

Почему бы вам не предложить, что вы сами ответили? – nos

+0

Потому что было бы слишком много шума, чтобы добавить еще один ответ для такого тривиального вопроса. –

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

  • Нет связанных вопросов^_^