![使用 jq 进行管道传输的问题](https://linux22.com/image/219289/%E4%BD%BF%E7%94%A8%20jq%20%E8%BF%9B%E8%A1%8C%E7%AE%A1%E9%81%93%E4%BC%A0%E8%BE%93%E7%9A%84%E9%97%AE%E9%A2%98.png)
这精确的这里提出了问题:
但那里提供的答案并没有解决我的问题。另外,我阅读了以下内容:
- 关闭管道中的缓冲
- https://stackoverflow.com/questions/62809196/how-do-i-keep-colors-when-piping-jq-output-to-less
这些都没有解决我的问题。好的,以上信息是为了让您知道我已经完成了作业,在继续阅读之前请不要否决或关闭此问题:-)
我使用以下命令漂亮的印刷品一个 json 文件:
cat a-json-file.json |jq|less
但屏幕(END)
底部显示 ,什么也没有显示。然后我用谷歌搜索了这个问题,找到了上述信息,尝试了:
cat a-json-file.json |jq --unbuffered|less
什么都没发生。然后我安装了expect
,尝试:
cat a-json-file.json |unbuffer jq|less
它也不起作用,jq
只需输出其命令行使用信息即可!
最后,我通过这个解决了这个问题:
jq "." a-json-file.json |less
现在的问题是,为什么管道链不能与 jq 一起使用,上面的非工作命令和工作命令有什么区别?
我的系统信息:Debian 10 buster
, jq-1.5-1-a5b5cbe
.
答案1
@steeldriver 的评论解决了这个问题:
你也尝试过吗
cat a-json-file.json |jq '.'|less
?这似乎是 jq 1.5 的一个已知问题 - 请参见示例重定向或管道输出具有不同的行为 #1028以及错误修复部分jq 1.6 发行说明