J'ai ce Json
{
"users": [
{
"first": "Stevie",
"last": "Wonder"
},
{
"first": "Michael",
"last": "Jackson"
}
]
}
En utilisant jq, j'aimerais afficher le nom et le prénom en série. Ainsi -
Stevie Wonder
Michael Jackson
Voilà jusqu'où je suis allé -
jq '.users[].first, .users[].last'
Mais il affiche
"Stevie"
"Michael"
"Wonder"
"Jackson"
Remarquez ce qui suit -
- Les guillemets doubles que je ne veux pas.
- Le retour chariot que je ne veux pas.
- C'est brouillé. Ma requête affiche d'abord tous les prénoms, puis tous les noms de famille. Cependant, je veux l'avant-dernière, l'avant-dernière paire.
Vous pouvez utiliser l' addition pour concaténer des chaînes.
Ce qui précède fonctionne lorsque les deux
first
etlast
sont des chaînes. Si vous extrayez différents types de données (nombre et chaîne), nous devons convertir en types équivalents. Se référant à la solution sur cette question . Par exemple.la source
" "
à un nombre. La réponse d'Eric donne un meilleur résultat pour cette affaire.(.numA|tostring) + " " + (.numB|tostring)
devrait fonctionner. Ou interpolation de chaîne utiliser:"\(.numA) \(.numB)"
.jq '.users[] | .first + " " + .last'
, cela a très bien fonctionné, mais a provoqué une nouvelle ligne entre la valeur de.first
et.last
. J'ai changé le" "
pour"@"
puis ai fait unsed 's/@/ /g'
sur la sortie pour obtenir "John Smith" comme sortie. Quelque chose comme ça:jq '.users[] | .first + "@" + .last' | sed 's/@/ /g'
la source
Bien que les deux réponses ci-dessus fonctionnent bien si la clé, la valeur sont des chaînes, j'ai eu une situation pour ajouter une chaîne et un entier (erreurs jq en utilisant les expressions ci-dessus)
Condition: pour construire une URL sous json
Solution:
la source
\(...)
est l'interpolation de chaînes. Ici, il transforme le numérique.ServicePort
en chaîne. Une interpolation pourrait être utilisée à la place des+
signes pour raccourcir cette solution.Cela produira un tableau de noms
la source
Je me suis rapprochée de ce que je voulais en faisant quelque chose comme ça
Dont la sortie est assez proche de yaml pour que je puisse généralement l'importer dans d'autres outils sans trop de problème. (Je cherche toujours un moyen d'exporter basicallt un sous-ensemble de l'entrée json)
la source
mon approche sera (votre exemple json n'est pas bien formé .. devinez c'est seulement un échantillon)
renvoie quelque chose comme ça
et grep la sortie avec une expression régulière.
la source