Linux jq-Befehl

Linux 命令大全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

# Ubuntu/Debian
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

jq '.name' data.json
# Ausgabe: "John Doe"

Ein verschachteltes Feld abrufen:

Beispiel

jq '.address.city' data.json
# Ausgabe: "New York"

2. Array-Operationen

Array-Elemente abrufen:

Beispiel

jq '.hobbies[0]' data.json
# Ausgabe: "reading"

jq '.hobbies[1:3]' data.json
# Ausgabe: ["hiking", "coding"]

Array-Länge:

Beispiel

jq '.hobbies | length' data.json
# Ausgabe: 3

3. Bedingte Filterung

Elemente filtern, die die Bedingung erfüllen:

Beispiel

# Angenommen, users.json enthält ein Array von Benutzern
jq '.[] | select(.age > 25)' users.json

4. Datentransformation

Ein neues Objekt erstellen:

Beispiel

jq '{fullName: .name, city: .address.city}' data.json
# Ausgabe: {"fullName": "John Doe", "city": "New York"}

Mathematische Operationen:

Beispiel

jq '.age * 2' data.json
# 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

# 将对象数组转换为 CSV 格式
jq -r '["Name", "Age"], (.[] | [.name, .age] | @csv' users.json

4. 错误处理

Beispiel

# 使用 try-catch 处理可能存在的字段
jq 'try .unknown_field catch "default value"' data.json

Anwendungsszenarien aus der Praxis

1. 日志分析

Beispiel

# 分析 JSON 格式的日志文件
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

# Durchschnittsalter der Benutzer berechnen
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:

  1. Grundlegende Installation und Verwendung von jq
  2. Gängige Datenabfrage- und Filteroperationen
  3. Fortgeschrittene Techniken zur Datentransformation und -verarbeitung
  4. 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!


Linux 命令大全Vollständige Linux-Befehlsreferenz

Andere Erweiterungen