Commande jq sous Linux

Linux 命令大全Référence complète des commandes Linux


jq est un processeur JSON en ligne de commande léger et puissant. Il vous permet d'analyser, filtrer, transformer et formater efficacement des données JSON, et est particulièrement adapté au traitement des données JSON dans les scripts shell.

Principales fonctionnalités de jq

  • Traitement en flux: peut gérer des données JSON de n'importe quelle taille
  • Opérateurs riches: fournit une variété d'opérateurs pour manipuler des structures de données JSON
  • Sortie formatée: peut embellir la sortie JSON pour une meilleure lisibilité
  • Multiplateforme: fonctionne sous Linux, macOS et Windows (via WSL)

Installation de jq

Sur la plupart des distributions Linux, vous pouvez facilement installer jq via le gestionnaire de paquets :

Exemples

# Ubuntu/Debian
sudo apt-get install jq

# CentOS/RHEL
sudo yum install jq

# Fedora
sudo dnf install jq

# macOS (avec Homebrew)
brew install jq

Après l'installation, vous pouvez vérifier si l'installation a réussi avec la commande suivante :

jq --version

Syntaxe de base

Le format de commande de base de jq est le suivant :

jq [options]  [file...]

Options et paramètres courants

Option Description
-c Sortie compacte (non embellie)
-r Afficher la chaîne brute (supprimer les guillemets JSON)
-s Lire l'intégralité du flux d'entrée dans un tableau
-M Désactiver la sortie en couleur
--arg Définir une variable
--slurp Lire plusieurs objets JSON dans un tableau

Exemples d'opérations courantes

1. Analyse JSON de base

Supposons que nous ayons un fichier nommédata.jsonavec le contenu suivant :

Exemple

{
  "name": "John Doe",
  "age": 30,
  "isActive": true,
  "address": {
    "street": "123 Main St",
    "city": "New York"
  },
  "hobbies": ["reading", "hiking", "coding"]
}

Obtenir tout le contenu (sortie embellie):

jq '.' data.json

Obtenir un champ spécifique:

Exemple

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

Obtenir un champ imbriqué:

Exemple

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

2. Opérations sur les tableaux

Obtenir les éléments du tableau:

Exemple

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

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

Longueur du tableau:

Exemple

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

3. Filtrage conditionnel

Filtrer les éléments qui remplissent la condition:

Exemple

# Supposons que users.json contienne un tableau d'utilisateurs
jq '.[] | select(.age > 25)' users.json

4. Transformation de données

Créer un nouvel objet:

Exemple

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

Opérations mathématiques:

Exemple

jq '.age * 2' data.json
# Sortie : 60

5. Traitement de plusieurs fichiers

jq -s '.[0] + .[1]' file1.json file2.json

Utilisation avancée

1. Utilisation de variables

jq --arg new_city "Boston" '.address.city = $new_city' data.json

2. Gestion des réponses API

curl -s https://api.example.com/users | jq '.[] | {name: .name, email: .email}'

3. Transformation de données complexes

Exemple

# Convertir un tableau d'objets au format CSV
jq -r '["Name", "Age"], (.[] | [.name, .age]) | @csv' users.json

4. Gestion des erreurs

Exemple

# Utiliser try-catch pour gérer les champs qui peuvent ne pas exister
jq 'try .unknown_field catch "default value"' data.json

Scénarios d'application concrets

1. Analyse de journaux

Exemple

# Analyser les fichiers journaux au format JSON
cat app.log | jq 'select(.level == "error") | {time: .timestamp, message: .msg}'

2. Traitement de la configuration

Exemple

# Modifier une valeur dans le fichier de configuration
jq '.config.timeout = 30' config.json > temp.json && mv temp.json config.json

3. Statistiques des données

Exemple

# Calculer l'âge moyen des utilisateurs
jq '[.[].age] | add / length' users.json

FAQ

1. Comment gérer les fichiers JSON volumineux ?

Pour les fichiers JSON très volumineux, vous pouvez utiliser le traitement en flux :

jq -n 'inputs | select(.value > 100)' hugefile.json

2. Comment préserver les caractères spéciaux dans du JSON ?

Lors de l'utilisation de la-roption, les caractères spéciaux sont échappés. Si vous devez les afficher tels quels, vous pouvez :

jq -j '.' file.json

3. Comment fusionner plusieurs fichiers JSON ?

jq -s 'add' file1.json file2.json

Résumé

jq est un outil puissant pour traiter des données JSON. Grâce à cet article, vous devriez avoir maîtrisé :

  1. Installation et utilisation de base de jq
  2. Opérations courantes de requête et de filtrage de données
  3. Techniques avancées de transformation et de traitement des données
  4. Méthodes d'utilisation dans des scénarios d'application réels

Pour améliorer davantage vos compétences avec jq, vous pouvez :

  • Entraînez-vous à manipuler diverses structures de données JSON complexes
  • Essayez d'intégrer jq dans vos scripts shell
  • Consultez le manuel officiel de jq pour découvrir des fonctionnalités plus avancées

N'oubliez pas que maîtriser jq peut considérablement améliorer votre efficacité dans le traitement des données JSON en ligne de commande !


Linux 命令大全Référence complète des commandes Linux

Autres extensions