2
:更新内容
{
"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" : "" }
}
}
}
私のタスクが与えられたJSONファイルにus-east-1
のAMI
キーの値を更新し、更新されたファイルを作成することです新しいファイルとして。リダイレクト演算子を使用してjqプラグインを使用しています。それはオブジェクト内の内容をoverwrite
に使用することができる+演算子を持っています。
expected
出力は私の現在のコマンドが期待される出力とを
{
"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" : "" }
}
}
}
提供されていないされて
:
jq '.Mappings.RegionMap + { "us-east-1":{"AMI":"abcd"}}'
<OldfileName> > <Newfilename>
を誰かがリダイレクト演算子を使用して、予想される出力を達成することで私を助けることができますか?
私はcygwin
環境でコマンドを実行しており、jqバージョンは1.5
です。
...
"Password":"yyyyy" <----
...
それは次のようになります。
EDIT
は、あなたの入力JSONが無効になります最初の問題は、この行(3行目)でパスワードの後にキー
@RomanPerekrestおかげ
それを修正した後、あなたは簡単に必要なプロパティ値を更新することができます。出来た。また、私の編集 – shubhamagiwal92@ shubhamagiwal92を参照してください、あなたは歓迎です – RomanPerekhrest
大したことではありませんが、固定値を割り当てているので、この場合単純な割り当て '='を使用します。私は新しい値を決定するために現在の値が必要な場合に '| ='を予約します。 –