Commande jq sous 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
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
# Sortie : "John Doe"
Obtenir un champ imbriqué:
Exemple
# Sortie : "New York"
2. Opérations sur les tableaux
Obtenir les éléments du tableau:
Exemple
# Sortie : "reading"
jq '.hobbies[1:3]' data.json
# Sortie : ["hiking", "coding"]
Longueur du tableau:
Exemple
# Sortie : 3
3. Filtrage conditionnel
Filtrer les éléments qui remplissent la condition:
Exemple
jq '.[] | select(.age > 25)' users.json
4. Transformation de données
Créer un nouvel objet:
Exemple
# Sortie : {"fullName": "John Doe", "city": "New York"}
Opérations mathématiques:
Exemple
# 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
jq -r '["Name", "Age"], (.[] | [.name, .age]) | @csv' users.json
4. Gestion des erreurs
Exemple
jq 'try .unknown_field catch "default value"' data.json
Scénarios d'application concrets
1. Analyse de journaux
Exemple
cat app.log | jq 'select(.level == "error") | {time: .timestamp, message: .msg}'
2. Traitement de la configuration
Exemple
jq '.config.timeout = 30' config.json > temp.json && mv temp.json config.json
3. Statistiques des données
Exemple
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é :
- Installation et utilisation de base de jq
- Opérations courantes de requête et de filtrage de données
- Techniques avancées de transformation et de traitement des données
- 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 !
Autres extensions