Voici une autre approche. Si vous êtes nouveau à jq il peut être plus facile de travailler vers l'objectif en petites étapes.
1) commencer avec le filtre ayant une identité
.
qui produit comme prévu
[
"smoke-tests",
"push-apps-manager"
]
2) ajouter ensuite l'objet externe avec le "errands"
clé:
{ "errands": . }
qui produit
{
"errands": [
"smoke-tests",
"push-apps-manager"
]
}
3) se déplacent suivant les données dans un tableau
{ "errands": [ . ] }
qui produit
{
"errands": [
[
"smoke-tests",
"push-apps-manager"
]
]
}
4) ajouter l'objet interne avec les "name"
et "post_deploy"
touches
{ "errands": [ { "name": ., "post_deploy": true } ] }
qui produit
{
"errands": [
{
"name": [
"smoke-tests",
"push-apps-manager"
],
"post_deploy": true
}
]
}
5) Maintenant, nous sommes vraiment proches. Tout ce que nous devons faire est de tirer parti des de de Object Construction behavior when an expression produces multiple results:
{ "errands": [ { "name": .[], "post_deploy": true } ] }
qui nous donne le résultat souhaité
{
"errands": [
{
"name": "smoke-tests",
"post_deploy": true
},
{
"name": "push-apps-manager",
"post_deploy": true
}
]
}
100% impressionnant! maintenant, quelle méthode utiliser? Honnêtement, j'aime la méthode de la carte, je vais aller avec ça. – AG6HQ
Probablement 'map'; pour être honnête, en regardant de plus près la page de manuel, j'ai involontairement réimplémenté 'map' avec ma première solution. ('map' est * défini * comme' [. [] | x] '.) – chepner