Je voudrais convertir le flux d'objets:
{
"a": "green",
"b": "white"
}
{
"a": "red",
"c": "purple"
}
en un seul objet:
{
"a": "red",
"b": "white",
"c": "purple"
}
De plus, comment puis-je encapsuler la même séquence dans un tableau?
[
{
"a": "green",
"b": "white"
},
{
"a": "red",
"c": "purple"
}
]
Malheureusement, le manuel manque sérieusement d'exhaustivité, et Google ne trouve pas non plus les réponses.
Si votre entrée est un flux d'objets, à moins que votre jq n'ait inputs
, les objets doivent être "slurpés", par ex. en utilisant l'option de ligne de commande -s, afin de les combiner.
Ainsi, une façon de combiner des objets dans le flux d'entrée est d'utiliser:
jq -s add
Pour le deuxième problème, créer un tableau:
jq -s .
Il existe bien sûr d'autres alternatives, mais elles sont simples et ne nécessitent pas la version la plus récente de jq. Avec jq 1.5 et versions ultérieures, vous pouvez utiliser des `` entrées '', par ex. jq -n '[inputs]'
Une alternative au slurping à l'aide de l'option de ligne de commande -s consiste à utiliser le filtre inputs
. Ainsi:
jq -n '[inputs] | add'
Cela produira un objet avec tous les objets d'entrée combinés.