我是jq的新手,仍在尝试学习JSON的基础知识,所以请原谅我缺乏知识。 我发现这个工具非常快,但我正在努力获得我需要的结果。我相信这是可能的,因为我已经意外:( 使得它一旦我有输入数据,如jq将数组拆分为两个数组
[
{"time":1499150456,"data":{"power":{"bus":3.88,"shunt":6.98,"load":3.89,"current":76.00},"light":{"light":21}}},
{"time":1499150516,"data":{"power":{"bus":3.93,"shunt":1.67,"load":3.93,"current":16.20},"light":{"light":21}}},
{"time":1499150576,"data":{"power":{"bus":3.92,"shunt":5.58,"load":3.93,"current":25.30},"light":{"light":21}}},
{}
]
我想将它解压到像
[
1499150456,
1499150516,
1499150576
]
[
76.00,
16.20,
25.30
]
我用什么等等远是:
cat inputFile.json | jq -C '.[] | select (length > 0)'
,输出漂亮的初始数组没有最后空记录 接下来,我能够做到
cat inputFile.json | jq -C '.[] | select (length > 0) | .time, .data.power.current'
结果非常接近,但不完全是我所需要的。 我想使用我在某个例子中发现的map(.time),但是这导致了一个错误 - 不知道如何使用它,并且这些例子迄今为止并不适用于我。
无论我怎么努力,我始终以“不能用字符串索引号” 我试图 'JQ -r”结束[]。|选择(长度> 0)|地图(select(.time))'' 但这总是会产生相同的错误。由于长度部分,它应该跳过空记录,但它仍然不起作用:( –
也许你打算写:'地图(选择(长度> 0)|选择(。时间))'?或者也许:'。 [] | select(length> 0 and .time)'? – peak
所以我试过了: 'jq -C'。[] | select(length> 0 and .time)| map(.time)'' and ' jq -C'。[] | select(length> 0)| map(select(.time))'' 并且两者都以'无法用字符串索引数字'结尾' –