janv.
08
2022
😤 Ce billet a été édité le : 2024-02-09
jq est un processeur JSON en ligne de commande, elle permet de transformer un document JSON en un autre. Certaines options permettent de convertir depuis et vers d’autres formats.
ඏ
Supprimer le tableau vide ([]
ou null
)
jq '[ .[] | select(length > 0) ]'
Prenons l’exemple suivant :
TEST=$( cat <<EOF | jq -c .
{
"tableaux": [
["A","B","C"],
null,
["E","F","G"],
["H","I"],
[],
["K"]
]
}
EOF
)
La commande ici sera :
jq '.tableaux | [ .[] | select(length > 0) ]' <<<"${TEST}"
Dans le cas général, pour corriger le document initial, on utilisera :
jq '. + { tableaux:( .tableaux | [ .[] | select(length > 0) ]) }' <<<"${TEST}"
ඏ
Utilisation de map(x)
La fonction map(X)
est équivalent à [.[] | X]
, donc on peut écrire :
jq '[ .[] | select(length > 0) ]'
jq 'map(select(length > 0))'
Pour vérifier avec l’exemple plus haut :
jq '.tableaux | map(select(length > 0))' <<<"${TEST}"
ou pour reconstruire tout le fichier :
jq '. + { tableaux:( .tableaux | map(select(length > 0))) }' <<<"${TEST}"
ඏ
Autre billets et documentations :
ᦿ