jq - JSON Query
jq
est d'après son créateur un lightweight and flexible command-line JSON processor soit en bon Français, un outil de traitement de JSON en ligne de commande léger et flexible.
jq
est un outil en ligne de commande (CLI) qui permet de découper, filtrer et modifier à souhait de la donnée au format JSON sous Linux.
Par exemple pour afficher le JSON avec reconnaissance syntaxique :
docker inspect mon_conteneur_docker | jq -C | less
Exemples
Voici différents méthodes pour extraire la clé Mounts du résultat de la commande docker inspect
.
docker inspect nginx|jq '.[0].Mounts'
# .[0] car le JSON généré ici est un tableau d'1 élément (Array Index)
# .Mounts = clé dans l'objet JSON
# équivalent avec [] qui retourne tous les index (Array/Object Value Iterator)
docker inspect nginx|jq '.[].Mounts'
# équivalent (Generic Object Index)
docker inspect nginx|jq '.[0]["Mounts"]'
# pour récupérer plusieurs clés
docker inspect nginx|jq '.[0].NetworkSettings, .[0].Mounts'
Voir le manuel officiel de jq pour plus d'infos
Note
On peut par exemple obtenir une sélection de clé de la commande docker inspect
(doc) et donc avoir le même résultat que la 1ère commande ci-dessus :
docker inspect --format='{{json .Mounts}}' nginx | jq
# est équivalent à
docker inspect nginx|jq '.[0].Mounts'
Le mystère de la signification de jq
D'après ce post sur SO (on ne trouve pas la réponse sur le site officiel) l'auteur a choisi ce nom simplement parce que la combinaison de lettres jq
est court et facile à tapper au clavier 😂🥳🤣 Mythe ou réalité ? en tout cas c'est drôle !
... although 'jq' doesn't specifically "mean" anything. Asked the utility's author, which provided this interesting bit of trivia: "Honestly, the name was chosen to be short and easy to type on qwerty, not to have any particular meaning."