Отфильтровать записи в дочернем массиве - PullRequest
0 голосов
/ 13 февраля 2019

Как я могу отфильтровать элементы в подмассиве json?

Например, с этим:

{
  "country": "Australia",
  "cities": [
    "Melbourne",
    "Sydney",
    "Brisbane",
    "Perth"
  ]
}

Мне нужно отфильтровать "Брисбен" и "Перт", чтобы получить.

{
  "country": "Australia",
  "cities": [
    "Melbourne",
    "Sydney"
  ]
}

Я пробовал разные комбинации select(something|test("Brisbane|Perth")|not), но безуспешно.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Вы можете использовать вычитание:

jq '.cities -= ["Perth", "Brisbane"]'

Вывод:

{
  "country": "Australia",
  "cities": [
    "Melbourne",
    "Sydney"
  ]
}
0 голосов
/ 13 февраля 2019

Вы можете использовать оператор присвоения обновлений |= в сочетании с map

jq '.cities|=map(if . == "Brisbane" or . == "Perth" then empty else . end)'
...