我有一个Python程序,可以打印json对象(来自游戏API的间歇消息)。当我自己运行程序时,每条消息都会立即显示在控制台输出中。
$ python myprog.py
{"SG_MSG":{"obj_id":"SD748","aspect":"0","time":"42"}}
{"SG_MSG":{"obj_id":"SD748","aspect":"6","time":"75"}}
但是当我将输出通过管道传输到jq时,jq不会输出任何时间,并且偶尔会发出一堆消息:
$ python myprog.py | jq .
我尝试在每条消息的前面加上记录分隔符(ascii 30),并使用jq --seq .
,但结果是相同的。
按{q}手册上的说明,向od
输水会显示记录分隔符:
$ python myprog.py | od -t d1
… … … 125 125 10 30 123 … …
是},},LF,RS,{
管道传输到od
会显示相同的行为,直到备份一堆消息后才会显示输出。
我猜我在这里忽略了bash的一些基本知识……?