次のJSONオブジェクトがあります。
{
"1": {
"available_memory": 1086419656.0,
"available_memory_no_overbooking": 1086419656.0,
"conns": 1.0
},
"2": {
"available_memory": 108641236.0,
"available_memory_no_overbooking": 10861216.0,
"conns": 2.0
}
}
各オブジェクトIDの "conns"属性値を取得したいと思います。私はjqに最初に触れましたが、明確な例が見つかりませんでした。
私は以下を試しました:
echo "$OUTPUT" | jq -r .[].conns
connsのすべての値を返しますが、それは私が必要とするものではありません。予想される出力は次のとおりです。
1 1.0
2 2.0
どんなアイデアがありますか?
ベストアンサー1
$ jq -r 'keys[] as $k | "\($k) \(.[$k].conns)"' file.json
1 1
2 2
jqは1.0を1に、2.0を2に変換するようです。明確にするために入力を変更します。
$ cat file.json
{
"1a": {
"available_memory": 1086419656.0,
"available_memory_no_overbooking": 1086419656.0,
"conns": 1.1
},
"2b": {
"available_memory": 108641236.0,
"available_memory_no_overbooking": 10861216.0,
"conns": 2.2
}
}
$ jq -r 'keys[] as $k | "\($k) \(.[$k].conns)"' file.json
1a 1.1
2b 2.2
参考資料: