JQを使用してJQにパイプされたコマンドの結果としてJson値を設定する方法

JQを使用してJQにパイプされたコマンドの結果としてJson値を設定する方法

コマンドのJSON出力からID番号を取得するbashスクリプトに関数があります。この値を別のJSONファイルに設定したいと思います。どうすればいいですか?

build_vpc(){

      aws ec2 create vpc --Foo "ipaddress" | jq .Vpc.VpcID
}
Output : "vpc-0f482198efba76163"

この値を取得して別のJSONファイルに設定したいと思います。

ジェイソンファイル:

{
  "VPC":{
         "VPC_ID" : ""
}
}

ベストアンサー1

次のようになります。

jq --argjson vpcid "$(
    aws ec2 create vpc --Foo "ipaddress" | jq .Vpc.VpcID
  )" 'setpath(["VPC","VPC_ID"]; $vpcid)' file.json > newfile.json

の出力はjq .Vpc.VpcIDjsonとして解釈され、$vpcidother変数(pathのオブジェクト)に格納さjqれます。.VPC.VPC_ID["VPC","VPC_ID"]file.json

私は上記であなたがfile.json最初に保持する必要がある他の情報を持っていると仮定しています。修正する新しい情報が含まれています。

ポイントは、file.json次の内容だけを含む新しいコンテンツを作成することです。

{
  "VPC":{
         "VPC_ID" : "that-value"
  }
}

次の作業を実行できます。

aws ec2 create vpc --Foo "ipaddress" |
  jq '{"VPC":{"VPC_ID":.Vpc.VpcID}}' > newfile.json

おすすめ記事