如何使用jq将stdin转为含行列表的指定JSON结构?
用jq实现从标准输入生成指定格式JSON
直接用jq的一行命令就能搞定,核心是利用-n参数和inputs函数处理标准输入的每一行:
jq -n '{cmd: "In", lines: [inputs]}'
命令解释
-n:告诉jq不要默认把输入解析为JSON数据,而是手动通过inputs读取内容inputs:遍历标准输入的所有行,把每一行作为字符串收集起来,最终组成数组- 最后构造需求的JSON结构,
cmd字段固定为"In",lines字段就是收集到的行数组
测试示例
比如输入三行文本:
echo -e "first line\nsecond line\nthird line" | jq -n '{cmd: "In", lines: [inputs]}'
输出结果:
{ "cmd": "In", "lines": [ "first line", "second line", "third line" ] }
如果是空输入,lines会返回空数组[],完全符合需求。
内容的提问来源于stack exchange,提问作者qeatzy
相关产品推荐
相关产品推荐

