Json

使用 jq 獲取給定鍵及其父項的值

  • March 11, 2020

我有一個像這樣的 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

有任何想法嗎?

$ 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

參考:

引用自:https://unix.stackexchange.com/questions/481288