jq – Kommandozeilenbasiertes Tool für JSON

Viele Web-Dienste basieren auf REST und liefern die Resultate häufig als JSON. Das auf der Kommandozeile auszuwerten gestaltet sich wegen der verschachtelten Struktur als etwas schwerer.

EIne Lösung stellt jq dar, jq erlaubt das gezielte Abfragen der einzelnen Einträge in einem JSON String.

Beispiel:

docker inspect openvpn_server | jq '.[0].NetworkSettings.Ports | keys '

inspiziert zunächst einen Docker-Container, fragt die Ports aus den Networksettings ab und extrahiert die Keys des Objects. Das Ergebnis ist:

[
  "1194/tcp",
  "1194/udp"
]

Ein Tutorial bietet das Projekt hier: http://stedolan.github.io/jq/tutorial/. Das ausführliche Handbuch hier: http://stedolan.github.io/jq/manual/.

Update

curl -s http://api.bitcoincharts.com/v1/markets.json | jq '.[] | select(.symbol == "btcdeEUR" )'

fragt eine JSON-Datei (mit Bitcoin Informationen) und extrahiert aus dem Array das Objekt, welches den Wert btcdeEUR als symbol besitzt.