我是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))'' 並且兩者都以'無法用字符串索引數字'結尾' –