GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ein Feld aus einem Json-Array in ein Bash-Array parsen?

Ich habe eine JSON-Ausgabe, die eine Liste von Objekten enthält, die in einer Variablen gespeichert sind. (Möglicherweise formuliere ich das nicht richtig)

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

Ich brauche alle Werte für item2 in einem Array, damit ein Bash-Skript unter Ubuntu 14.04.1 ausgeführt werden kann.

Ich habe eine Reihe von Möglichkeiten gefunden, das gesamte Ergebnis in ein Array zu bekommen, aber nicht nur die Elemente, die ich brauche

Akzeptierte Antwort:

Mit jq :

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

CODE:

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

AUSGABE:

value2
value2_2

Linux
  1. Bash-Array von Arrays?

  2. Wie parse ich eine CSV-Datei in Bash?

  3. Konvertieren Sie die Ausgabe von bash `ls` in ein json-Array

  4. So komprimieren Sie alle Dateien in allen Unterverzeichnissen in eine komprimierte Datei in Bash

  5. Konvertieren Sie eine Textzeichenfolge in Bash in ein Array

Bash Break:So verlassen Sie eine Schleife

Bash-Arrays

Assoziatives Array in Bash

Bash erfasst die Ausgabe von awk in ein Array

bash:Listendateien in eine Variable einfügen, aber die Größe des Arrays ist 1

bash - gibt ein Array von der Funktion zurück und zeigt den Inhalt an