Développeur FullStack & Devops

Notes et mémos techniques

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."

linux
jq
json
docker
syntaxe
devops
rédigé le 25/11/22, mis à jour le 30/11/22 par Behrouze
A proposCheat SheetsOutilsVidéos