jq - JSON in der Kommandozeile - Das große JSON Tutorial #7
Mit jq kannst du JSON in der Kommandozeile filtern und transformieren. Das praktische Werkzeug gibt es für Linux, Mac und Windows. Es läßt sich gut mit curl oder resty zu mächtigen Pipelines kombinieren.
Die von jq verwendete Abfragesprache ist an JSONPath angelehnt aber um einiges mächtiger. Neben einfachen Abfragen bietet jq u.a.:
- Operatoren für Berechnungen
- Funktionen
- Variablen
- Datentypen
- Kontrollstrukturen
- Datumsfunktionen
- Reguläre Ausdrücke
Die im Beispiel verwendete JSON Datei kannst du hier herunterladen:
Speichere diese Datei auf deinem Rechner, wenn du die Kommandos im Tutorial selbst ausprobieren möchtest.
Beispiele
Hier findest du die Beispiele vom Video zum selber Ausprobieren.
cat wesen.json
cat wesen.json | jq
cat wesen.json | jq .wesen
cat wesen.json | jq .wesen[0]
cat wesen.json | jq '.wesen[0]'
cat wesen.json | jq '.wesen[0:3]'
cat wesen.json | jq '.wesen[:3]'
cat wesen.json | jq '.wesen[]'
cat wesen.json | jq '.wesen[].name'
cat wesen.json | jq '[.wesen[].name] | join(", ")'
cat wesen.json | jq '.wesen[] | .name |= ascii_upcase'
cat wesen.json | jq '.wesen[] | .name |= ascii_upcase | .beschreibung = "abc"'
cat wesen.json | jq '.wesen[] | .name |= ascii_upcase | .beschreibung = if .staerke > 5 then "gefährlich" else "harmlos" end'
cat wesen.json | jq '.wesen[0] | values[]'
cat wesen.json | jq '.wesen[0] | values[] | type'
cat wesen.json | jq '.wesen[].staerke '
cat wesen.json | jq '.wesen[].staerke + 5'
cat wesen.json | jq '[.wesen[].staerke]'
cat wesen.json | jq '[.wesen[].staerke] | add'
cat wesen.json | jq '[.wesen[].staerke] | add / length'
cat wesen.json | jq '[.wesen[]]'
cat wesen.json | jq '[.wesen[]] | group_by(.biotop)'
Links
- jq
JSON Prozessor für die Shell