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

관련 정보