私はjqの新機能ですが、まだJSONの基礎を学んでいます。 私はツールを驚くほど早く見つけましたが、私は必要な結果を得るのに苦労しています。私は私が使用したものjqを2つの配列に分割する
[
1499150456,
1499150516,
1499150576
]
[
76.00,
16.20,
25.30
]
のようなものにそれを抽出したいな
[
{"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}}},
{}
]
ように私は、私は私が入力されたデータを持っている事故:( 一度それを作ったとして、それが可能だと確信していますここまででした:。
最後の空のレコードなしの素敵な初期配列を出力cat inputFile.json | jq -C '.[] | select (length > 0)'
次に、私は
を行うことができますよcat inputFile.json | jq -C '.[] | select (length > 0) | .time, .data.power.current'
結果は非常に近いですが、私が必要とするものではありません。 私はいくつかの例で見つかったマップ(.time)を使用したかったが、エラーが発生しました。使用方法がわからず、これまでの例ではうまくいきませんでした。
map(select(.time))
| map(.time), map(.data.power.current)
これは、マップとして解析される(...)|:
どんなに私がしようとするもの、私はいつも私が 'JQ -r」を試してみました「の文字列を持つことができないインデックス番号」 で終わるん[]。|選択(長さ> 0)| map(select(.time)) '' でも、常に同じエラーが発生します。長さ部分のおかげで、空のレコードをスキップする必要がありますが、それでもうまくいきません:( –
'map(select(length> 0)| select(.time)) '? [] | select(length> 0 and .time) '? – peak
だから私は試しました: ' jq -C '[] | select(length> 0 and .time)| map(.time)' ' と ' と両方が「文字列で数値をインデックスできません」時刻が「 –