GNU/Linux >> Znalost Linux >  >> Linux

Analyzovat jedno pole z pole Json do pole Bash?

Mám výstup JSON, který obsahuje seznam objektů uložených v proměnné. (Možná to neformuluji správně)

[
  {
    "item1": "value1",
    "item2": "value2",
    "sub items": [
      {
        "subitem": "subvalue"
      }
    ]
  },
  {
    "item1": "value1_2",
    "item2": "value2_2",
    "sub items_2": [
      {
        "subitem_2": "subvalue_2"
      }
    ]
  }
]

Potřebuji všechny hodnoty položky 2 v poli pro spuštění bash skriptu na ubuntu 14.04.1.

Našel jsem spoustu způsobů, jak dostat celý výsledek do pole, ale nejen položky, které potřebuji

Přijatá odpověď:

Pomocí jq :

$ cat json
[
  {
    "item1": "value1",
    "item2": "value2",
    "sub items": [
      {
        "subitem": "subvalue"
      }
    ]
  },
  {
    "item1": "value1_2",
    "item2": "value2_2",
    "sub items_2": [
      {
        "subitem_2": "subvalue_2"
      }
    ]
  }
]

KÓD:

arr=( $(jq -r '.[].item2' json) )
printf '%sn' "${arr[@]}"

VÝSTUP:

value2
value2_2

Linux
  1. Jak vytvořit pole jedinečných prvků ze řetězce/pole v Bash?

  2. Bash Array Of Arrays?

  3. Pole v Bash nenalezeno

  1. Spusťte bash skript z adresy URL

  2. převést výstup bash `ls` na pole json

  3. Jak gzipovat všechny soubory ve všech podadresářích do jednoho komprimovaného souboru v bash

  1. Jak mohu získat jedinečné hodnoty z pole v Bash?

  2. Použití jq k načtení hodnoty klíče z výstupu json

  3. bash - vrátí pole z funkce a zobrazí obsah