Как отфильтровать несколько имен ключей, начинающихся с аналогичного строкового ключа, с помощью Jmespath? - PullRequest
1 голос
/ 26 мая 2020

У меня ниже json, из которого я хочу отфильтровать все адреса ma c, начинающиеся с ключа macaddress_ с использованием jmespath, как этого добиться?

{
  "facts_hash": {
    "macaddress_em1": "44:a8:42:27:c7:ba",
    "netmask_em1": "255.255.255.0",
    "mtu_em1": "1500",
    "macaddress_em2": "44:a8:42:27:c7:bb",
    "mtu_em2": "1500",
    "macaddress_em3": "44:a8:42:27:c7:bc",
    "mtu_em3": "1500",
    "macaddress_em4": "44:a8:42:27:c7:bd",
    "mtu_em4": "1500",

  }
}

Спасибо

1 Ответ

0 голосов
/ 27 мая 2020

Вместо json_query можно выбрать совпадающие ключи и извлечь значения. Например,

    - debug:
        msg: "{{ my_keys|
                 map('extract', facts_hash)|
                 list }}"
      vars:
        my_keys: "{{ facts_hash.keys()|
                     select('match', '^macaddress_(.*)$')|
                     list }}"

дает

    "msg": [
        "44:a8:42:27:c7:ba",
        "44:a8:42:27:c7:bb",
        "44:a8:42:27:c7:bc",
        "44:a8:42:27:c7:bd"
    ]
...