2017-01-01 42 views
3

我在RPi3上使用Raspbian(實際上是HASSBian)。我試圖從netcat的解析輸出:爲什麼我無法將netcat的stdout傳遞給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

因爲爲這樣一個微不足道的問題添加另一個答案太多了。 –

相關問題