Linux jq-Befehl
Vollständige Linux-Befehlsreferenz
jq ist ein leichtgewichtiger und leistungsstarker JSON-Prozessor für die Kommandozeile. Es ermöglicht, JSON-Daten effizient zu parsen, zu filtern, umzuwandeln und zu formatieren, und eignet sich besonders für die Verarbeitung von JSON-Daten in Shell-Skripten.
Hauptmerkmale von jq
- Streaming-Verarbeitung: kann JSON-Daten jeder Größe verarbeiten
- Umfangreiche Operatoren: bietet eine Vielzahl von Operatoren zur Verarbeitung von JSON-Datenstrukturen
- Formatierte Ausgabe: kann JSON-Ausgaben für bessere Lesbarkeit verschönern
- Plattformübergreifend: läuft unter Linux, macOS und Windows (über WSL)
jq installieren
Auf den meisten Linux-Distributionen können Sie jq einfach über den Paketmanager installieren:
Beispiele
sudo apt-get install jq
# CentOS/RHEL
sudo yum install jq
# Fedora
sudo dnf install jq
# macOS (mit Homebrew)
brew install jq
Nach der Installation lässt sich mit dem folgenden Befehl überprüfen, ob die Installation erfolgreich war:
jq --version
Grundlegende Syntax
Das grundlegende Befehlsformat von jq ist wie folgt:
jq [options] [file...]
Allgemeine Optionen und Parameter
| Option | Beschreibung |
|---|---|
-c |
Kompakte Ausgabe (nicht verschönert) |
-r |
Rohe Zeichenkette ausgeben (JSON-Anführungszeichen entfernen) |
-s |
Den gesamten Eingabestream in ein Array einlesen |
-M |
Farbausgabe deaktivieren |
--arg |
Eine Variable definieren |
--slurp |
Mehrere JSON-Objekte in ein Array einlesen |
Beispiele für häufige Operationen
1. Grundlegendes JSON-Parsing
Angenommen, wir haben eine Datei mit dem Namendata.jsonmit folgendem Inhalt:
Beispiel
"name": "John Doe",
"age": 30,
"isActive": true,
"address": {
"street": "123 Main St",
"city": "New York"
},
"hobbies": ["reading", "hiking", "coding"]
}
Alle Inhalte abrufen (verschönerte Ausgabe):
jq '.' data.json
Ein bestimmtes Feld abrufen:
Beispiel
# Ausgabe: "John Doe"
Ein verschachteltes Feld abrufen:
Beispiel
# Ausgabe: "New York"
2. Array-Operationen
Array-Elemente abrufen:
Beispiel
# Ausgabe: "reading"
jq '.hobbies[1:3]' data.json
# Ausgabe: ["hiking", "coding"]
Array-Länge:
Beispiel
# Ausgabe: 3
3. Bedingte Filterung
Elemente filtern, die die Bedingung erfüllen:
Beispiel
jq '.[] | select(.age > 25)' users.json
4. Datentransformation
Ein neues Objekt erstellen:
Beispiel
# Ausgabe: {"fullName": "John Doe", "city": "New York"}
Mathematische Operationen:
Beispiel
# Ausgabe: 60
5. Verarbeitung mehrerer Dateien
jq -s '.[0] + .[1]' file1.json file2.json
Erweiterte Nutzung
1. Verwendung von Variablen
jq --arg new_city "Boston" '.address.city = $new_city' data.json
2. 处理数据
curl -s https://api.example.com/users | jq '.[] | {name: .name, email: .email}'
3. 复杂数据转换
Beispiel
jq -r '["Name", "Age"], (.[] | [.name, .age] | @csv' users.json
4. 错误处理
Beispiel
jq 'try .unknown_field catch "default value"' data.json
Anwendungsszenarien aus der Praxis
1. 日志分析
Beispiel
cat app.log | jq 'select(.level == "error") | {time: .timestamp, message: .msg}'
2. 配置处理
Beispiel
jq⟧.config.timeout = 30' '.config.timeout = 30' config.json &> temp.json && mv temp config.json
3. Datenstatistiken
Beispiel
jq .[].age] | add / length' users.json
FAQ
1. Wie geht man mit großen JSON-Dateien um?
Für sehr große JSON-Dateien können Sie Streaming-Verarbeitung verwenden:
jq -n 'inputs | select(.value > 100)' hugefile.json
2. Wie kann man Sonderzeichen in JSON erhalten?
Bei Verwendung der-rOption, Sonderzeichen werden escaped. Wenn Sie sie unverändert ausgeben möchten, können Sie:
jq -j '.' file.json
3. Wie führt man mehrere JSON-Dateien zusammen?
jq -s 'add' file1.json file2.json
Zusammenfassung
jq ist ein leistungsstarkes Werkzeug zur Verarbeitung von JSON-Daten. Durch diesen Artikel sollten Sie Folgendes gemeistert haben:
- Grundlegende Installation und Verwendung von jq
- Gängige Datenabfrage- und Filteroperationen
- Fortgeschrittene Techniken zur Datentransformation und -verarbeitung
- Verwendungsmethoden in realen Anwendungsszenarien
Um Ihre jq-Kenntnisse weiter zu verbessern, können Sie:
- Üben Sie den Umgang mit verschiedenen komplexen JSON-Datenstrukturen
- Versuchen Sie, jq in Ihre Shell-Skripte zu integrieren
- Schlagen Sie im offiziellen jq-Handbuch nach, um weitere fortgeschrittene Funktionen kennenzulernen
Denken Sie daran: Die Beherrschung von jq kann Ihre Effizienz bei der Verarbeitung von JSON-Daten auf der Kommandozeile erheblich verbessern!
Andere Erweiterungen