我正在尝试从 grep 实时文本流netcat
,但它对我不起作用:
netcat localhost 9090 | grep sender
Run Code Online (Sandbox Code Playgroud)
什么都不返回,但我相信它应该。
如果我将netcat
输出重定向到一个文件并添加一些延迟(模拟真实环境) - 那么它的工作原理:
$ (sleep 5; cat netcat_output; sleep 5) | grep sender
{"jsonrpc":"2.0","method":"GUI.OnScreensaverDeactivated","params":{"data": "shuttingdown":false},"sender":"xbmc"}}
Run Code Online (Sandbox Code Playgroud)
我也尝试添加--line-buffered
但没有成功。
我做错了什么?
编辑:
我注意到同样的问题sed
,输出为空。
但是,例如,hexdump
将文本转换为十六进制实时:
$ netcat localhost 9090 | hexdump -C
00000000 7b 22 6a 73 6f 6e 72 70 63 22 3a 22 32 2e 30 22 |{"jsonrpc":"2.0"|
00000010 2c 22 6d 65 74 68 6f 64 22 3a 22 50 6c 61 …
Run Code Online (Sandbox Code Playgroud)