получить несколько полей и перебрать массив - PullRequest
1 голос
/ 19 июня 2020

Как мне совместить это с jq? Оба работают независимо, но я не могу заставить их работать вместе:

jq '.objects[].addresses[] | .id, .ipValue.ipStr, .hostName'

jq '.objects[] | .id, .name'

Это не работает:

jq '.objects[] | .id, .name, .addresses[] | .id, .ipValue.ipStr, .hostName'

Другими словами, напечатайте .id., .name, переберите массив адресов и напечатайте .id, .ipValue.ipStr и .hostName ??

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Вы были близки, оператор вертикальной черты имеет более высокий приоритет, чем оператор запятой.

.objects[] | .id, .name, (.adresses[] | .id, .ipValue.ipStr, .hostName)
0 голосов
/ 19 июня 2020

Похоже, вы ищете что-то вроде:

jq -r '.objects[]
  | [.id, .name] + (.addresses[] | [.id, .ipValue.ipStr, .hostName])
  | @csv'
...