J'essaie d'analyser un document JSON et d'imprimer deux valeurs sur la même ligne. Est-il possible de prendre le document suivant:
{
"fmep": {
"foo": 112,
"bar": 234324,
"cat": 21343423
}
}
Et recrache:
112 234324
Je peux obtenir les valeurs que je veux mais elles sont imprimées sur des lignes séparées:
$ echo '{ "fmep": { "foo": 112, "bar": 234324, "cat": 21343423 } }' | jq '.fmep|.foo,.bar'
112
234324
S'il y a un exemple quelque part qui montre comment faire cela, j'apprécierais tout renseignement.
Le moyen le plus simple dans votre exemple consiste à utiliser Interpolation de chaînes avec l'option -r
. par exemple.
echo '{ "fmep": { "foo": 112, "bar": 234324, "cat": 21343423 } }' | \
jq -r '.fmep| "\(.foo) \(.bar)"'
produit
112 234324
Vous pouvez également envisager de placer les valeurs dans un tableau et d’utiliser @tsv p. Ex.
echo '{ "fmep": { "foo": 112, "bar": 234324, "cat": 21343423 } }' | \
jq -r '.fmep | [.foo, .bar] | @tsv'
qui produit des tabulations séparées
112 234324
Voici la syntaxe utilisant la sortie jointe (-j
):
jq -j '.fmep | .foo, " ", .bar, "\n"' payload.json