Die jq-Filter des Alltags, nach Aufgabe gruppiert: auf einen Wert zugreifen, filtern und auswählen, Sammlungen bearbeiten, Werte und Zeichenketten umwandeln, zu einem neuen Objekt oder Array umformen, Pfade an Ort und Stelle aktualisieren, nach Logik verzweigen sowie fortgeschrittene Reduktion – dazu die Kommandozeilen-Flags, die Ein- und Ausgabe formen. Jede Zeile paart den Filter mit dem Ergebnis, das er liefert.
jq ist ein Filter: Er liest JSON von stdin, führt eine Pipeline von Ausdrücken aus, die durch Pipes getrennt sind, und schreibt JSON auf stdout. Der Punkt ist der aktuelle Wert; alles baut darauf auf. Am schnellsten lernt man jq, indem man echte Daten durch die Rezepte unten leitet und die Ausgabe beobachtet. Ausführen als jq 'filter' datei.json oder curl ... | jq 'filter'.
Referenztabelle · 65 Einträge
jq-RezepteExplained
65 of 65 rows
Zugriff
Die gesamte Eingabe, hübsch formatiert.
Der Wert unter einem Schlüssel oder unter verschachtelten Schlüsseln.
Der Wert unter einem Schlüssel, dessen Name Sonderzeichen enthält.
Das erste Element eines Arrays (negativ zählt vom Ende).
Jedes Element eines Arrays oder jeder Wert eines Objekts, je in eigener Zeile.
Der Wert unter dem Schlüssel oder null, ohne Fehler, wenn der Schlüssel fehlt.
Filtern und Auswählen
Die unveränderte Eingabe, wenn cond wahr ist, sonst nichts.
Wendet expr auf jedes Element eines Arrays an und sammelt die Ergebnisse.
Die sortierten Schlüsselnamen oder die Werte eines Objekts als Array.
Die Länge eines Arrays oder einer Zeichenkette beziehungsweise die Anzahl der Schlüssel eines Objekts.
Nur die Elemente, deren Alter größer als 18 ist, als ein Array.
Sammlungen
Wahr, wenn mindestens ein Element beziehungsweise wenn jedes Element truthy ist oder einen Filter besteht.
Wahr, wenn der Schlüssel k im Objekt existiert; in führt denselben Test von der Schlüsselseite aus.
Das erste Element, das letzte oder nur die ersten n Ausgaben von f.
Der kleinste oder größte Wert in einem Array.
Die Zahlen von 0 bis n, jede als eigene Ausgabe.
Verschachtelte Arrays zu einem einzigen flachen Array zusammengefasst.
Wahr, wenn x irgendwo in der Eingabe vorkommt; inside dreht die Rollen um.
Wendet f von unten nach oben auf jeden Wert an und baut dann die gesamte Eingabe neu auf.
Umwandeln
Ein Array nur mit dem Feld price jedes Elements.
Die Summe eines Arrays von Zahlen oder die Zusammenführung eines Arrays von Objekten.
Wandelt einen Wert in eine Zeichenkette um beziehungsweise eine numerische Zeichenkette in eine Zahl.
Kodiert die Eingabe als JSON-Zeichenkette oder base64.
Eine Zeichenkette in Kleinbuchstaben.
Zeichenketten
Eine Zeichenkette, in deren Text der Wert von expr eingebettet ist.
Ersetzt jeden Treffer des Musters oder nur den ersten durch s.
Zerlegt eine Zeichenkette an einem Trennzeichen in ein Array oder verklebt ein Array zu einer Zeichenkette.
Testet eine Zeichenkette gegen ein Muster oder holt die Treffer und benannten Captures heraus.
Entfernt ein Präfix oder ein Suffix, aber nur wenn es vorhanden ist.
Wahr oder falsch: Die Zeichenkette beginnt beziehungsweise endet mit s.
Eine Zeichenkette in Großbuchstaben.
Ein Array, kodiert als CSV-Zeile, TSV-Zeile oder als quotierte Shell-Argumente.
Umformen
Ein neues Objekt nur mit den Feldern id und name der Eingabe.
Ein Array mit dem Namen jedes Elements.
Ein Array von {key, value}-Objekten aus einem Objekt.
Ein Objekt, gebaut aus einem Array von {key, value}-Objekten.
Elemente, nach ihrem Feld cat in Unterarrays gruppiert.
Sortiert nach einem Feld oder behält ein Element pro unterschiedlicher id.
Aktualisieren und Pfade
Aktualisiert den Wert am Schlüssel, indem f darauf ausgeführt wird.
Überschreibt den Wert am Schlüssel mit v.
Addiert n zum Wert von count, an Ort und Stelle.
Liest, schreibt oder löscht Werte an Pfaden, die als Arrays gegeben sind.
Steuerung und Logik
a, wenn c wahr ist, sonst b, mit elif für weitere Zweige.
Führt f aus und führt stattdessen g mit der Fehlermeldung aus, wenn f fehlschlägt.
Bricht mit einem Fehler ab, der msg trägt, sofern kein try ihn abfängt.
Gar keine Ausgabe; dieser Zweig verschwindet einfach aus den Ergebnissen.
Kombiniert Wahr- und Falsch-Werte oder kehrt einen um.
Fortgeschritten
Faltet das gesamte Array zu einer laufenden Summe zusammen.
Wie reduce, gibt aber den Zustand nach jedem Schritt aus, nicht nur den letzten.
Die nächste Eingabe oder alle verbleibenden Eingaben, mitten im Filter hereingezogen.
Ein Wert als JSON-Text oder JSON-Text zurückgeparst zu einem Wert.
Base64-Text zurückdekodiert in die ursprüngliche Zeichenkette.
Zuweisung tief in der Struktur, fehlende Ebenen werden auf dem Weg erzeugt.
a, wenn es nicht null oder false ist, sonst b (ein Standardwert).
Die Eingabe mit einem entfernten Schlüssel.
Jeder Pfad in der Eingabe als Array von Schlüsseln, von oben nach unten.
Variablen und CLI
Definiert $name als Shell-Zeichenkette, innerhalb des Filters verwendbar.
Definiert $name aus rohem JSON, für Zahlen, boolesche Werte, Arrays oder Objekte.
Definiert $name als den gesamten Inhalt einer JSON-Datei.
Gibt Zeichenketten-Ergebnisse roh aus, ohne Anführungszeichen oder Escapes.
Gibt jedes Ergebnis kompakt in einer Zeile aus, ohne Einrückung.
Führt den Filter einmal mit null aus, um Ausgabe aus dem Nichts zu bauen.
Liest die gesamte Eingabe in ein Array, bevor der Filter läuft.
Setzt den Exit-Code aus der letzten Ausgabe, damit Shell-Skripte das Ergebnis prüfen können.
Der Wert einer Umgebungsvariablen, innerhalb des Filters gelesen.