Obtenha valores para uma chave dada e seu pai com jq

0

Eu tenho um array JSON assim:

{
  "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
  }
}

Eu quero recuperar o valor do atributo "conns" para cada ID de objeto. Eu sou novo na jq e não consigo encontrar exemplos claros.

Eu tentei o seguinte:

echo "$OUTPUT" | jq -r .[].conns

Que retorna todos os valores para conns, mas isso não é o que eu precisava. A saída especificada seria:

1 1.0
2 2.0

Alguma idéia?

    
por A1t0r 12.11.2018 / 16:52

1 resposta

3
$ jq -r 'keys[] as $k | "\($k) \(.[$k].conns)"' file.json
1 1
2 2

Parece que jq traduz 1.0 para 1 e 2.0 para 2. Alterando a entrada para clareza:

$ 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

Refs:

por 12.11.2018 / 17:06

Tags