我有一个像这样的 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
}
}
Run Code Online (Sandbox Code Playgroud)
我想为每个对象 id 检索“conns”属性的值。我是 jq 的新手,我找不到明确的例子。
我尝试了以下方法:
echo "$OUTPUT" | jq -r .[].conns
Run Code Online (Sandbox Code Playgroud)
它返回 conns 的所有值,但这不是我需要的。预期的输出将是:
1 1.0
2 2.0
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
gle*_*man 10
$ jq -r 'keys[] as $k | "\($k) \(.[$k].conns)"' file.json
1 1
2 2
Run Code Online (Sandbox Code Playgroud)
似乎 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
Run Code Online (Sandbox Code Playgroud)
参考: