Linux Platform

jq

Traiter et transformer des données JSON

éditeurjsonfiltretransformation

Syntaxe

jq [OPTIONS] FILTRE [FICHIER...]

Options principales

OptionDescription
-rAfficher les chaines sans guillemets
-cSortie compacte sur une seule ligne
-eCode de retour base sur le résultat
-sLire toute l'entrée comme un seul tableau
--arg K VDefinir une variable utilisable dans le filtre

Exemples

Extraire un champ d'un objet JSON

$ echo '{"nom": "mouctar", "role": "admin"}' | jq '.nom'
"mouctar"
$ echo '{"nom": "mouctar", "role": "admin"}' | jq -r '.nom'
mouctar

Filtrer un tableau d'objets

$ cat utilisateurs.json | jq '.[] | select(.actif == true) | .nom'
"mouctar"
"alice"
"bob"

Transformer la structure d'un JSON

$ cat serveurs.json | jq '[.[] | {hote: .hostname, ip: .adresse}]'
[
  { "hote": "web-01", "ip": "192.168.1.10" },
  { "hote": "db-01", "ip": "192.168.1.20" }
]

Compter les éléments d'un tableau

$ cat logs.json | jq '[.[] | select(.niveau == "erreur")] | length'
42

Utiliser des variables dans le filtre

$ jq --arg env "production" '.[] | select(.environnement == $env)' config.json
{
  "nom": "api-prod",
  "environnement": "production",
  "port": 8080
}