ubuntuusers.de

Frage zur bedingten Ausgabe von Array-Elementen mit jq

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

lx_uwe

Avatar von lx_uwe

Anmeldungsdatum:
29. August 2017

Beiträge: 105

Ich möchte aus einer JSON-Datei wie im folgenden Beispiel jeweils die deviceID und die Version von "wagenkorb" ausgeben lassen und wenn keine wagenkorb-Version vorhanden ist, dann "Keine" als Text. Wie müsste der jq-Befehl dafür lauten? Danke.

 {
    "deviceID": "1",
    "getState": {
      "packageVersions": [
        {
          "name": "database-service",
          "version": "1.5.8"
        }
      ]
    }
  },
  {
    "deviceID": "2",
    "getState": {
      "packageVersions": [
        {
          "name": "wagenkorb",
          "version": "1.15.3~5.gbp55a2dd"
        },
        {
          "name": "database-service",
          "version": "1.5.8"
        }
      ]
    }
  }

Ausgabe sollte also z.B. so aussehen:

1 Keine
2 1.15.3~5.gbp55a2dd

EDIT: Sorry, hat sich erledigt, habe Lösung gefunden:

jq -r '"\(.deviceID) \((.getState.packageVersions[] | select(.name == "wagenkorb") | .version) // "Keine")"' input.json
Antworten |