Mon fichier d'entrée JSON
se présente comme suit:contenu mise à jour de fichiers via JQ à l'aide de l'opérateur de redirection
{
"Name":"SA",
"Password":"yyyyy",
"Mappings" : {
"RegionMap" : {
"us-east-1" : { "AMI" : "xxxxxx" },
"us-east-2" : { "AMI" : "" },
"us-west-1" : { "AMI" : "" },
"us-west-2" : { "AMI" : "" },
"ca-central-1" : { "AMI" : "" },
"eu-central-1" : { "AMI" : "" },
"eu-west-1" : { "AMI" : "" },
"eu-west-2" : { "AMI" : "" },
"ap-south-1" : { "AMI" : "" },
"ap-southeast-1" : { "AMI" : "" },
"ap-southeast-2" : { "AMI" : "" },
"ap-northeast-1" : { "AMI" : "" },
"ap-northeast-2" : { "AMI" : "" },
"sa-east-1" : { "AMI" : "" }
}
}
}
Ma tâche consiste à mettre à jour la valeur de la clé AMI
de us-east-1
dans le fichier JSON donné et créer le fichier mis à jour comme nouveau fichier. J'utilise le plugin jq avec l'opérateur de redirection. Il a + opérateur qui peut être utilisé pour overwrite
contenus dans un objet.
Ma sortie expected
est
{
"Name":"SA",
"Password":"yyyyy",
"Mappings" : {
"RegionMap" : {
"us-east-1" : { "AMI" : "abcd" },
"us-east-2" : { "AMI" : "" },
"us-west-1" : { "AMI" : "" },
"us-west-2" : { "AMI" : "" },
"ca-central-1" : { "AMI" : "" },
"eu-central-1" : { "AMI" : "" },
"eu-west-1" : { "AMI" : "" },
"eu-west-2" : { "AMI" : "" },
"ap-south-1" : { "AMI" : "" },
"ap-southeast-1" : { "AMI" : "" },
"ap-southeast-2" : { "AMI" : "" },
"ap-northeast-1" : { "AMI" : "" },
"ap-northeast-2" : { "AMI" : "" },
"sa-east-1" : { "AMI" : "" }
}
}
}
Ma commande actuelle ne fournit pas la sortie attendue et son comme suit:
jq '.Mappings.RegionMap + { "us-east-1":{"AMI":"abcd"}}'
<OldfileName> > <Newfilename>
quelqu'un peut me aider à atteindre les résultats attendus en utilisant l'opérateur de redirection? Je exécute la commande sur un environnement cygwin
et ma version jq est 1.5
.
EDIT
Ajout d'une virgule après le mot de passe clé
@RomanPerekrest Merci. Ça a marché. Voir aussi mon édition – shubhamagiwal92
@ shubhamagiwal92, vous êtes les bienvenus – RomanPerekhrest
Pas un gros problème, mais j'utiliserais juste une simple affectation '=' dans ce cas puisque vous affectez une valeur fixe. Je réserverais '| =' pour les cas où vous avez besoin de la valeur actuelle pour déterminer la nouvelle valeur. –