Как установить значение Json с помощью JQ в результате передачи команды в JQ

Если существует возможность того, что группы имен фаз начинаются с seqno, большего, чем у последней, может оказаться неэффективным полагаться на seqno, а лучше полагаться на Phasename. Вы можете попробовать эту адаптацию предложения Кусалананды:

    awk '
    FNR == 1        {split ($0, header)
                     next
                    }

    $3 != LAST      {printf TMPRS; TMPRS = ORS
                     for (i = 1; i <= NF; ++i) printf ("%s%s%s", (i>3)?$3"_":_, header[i], (i==NF?ORS:OFS))
                    }

                    {LAST = $3
                     print
                    }
    ' OFS="\t" filename1 filename2
1
28.07.2020, 23:21
1 ответ

Примерно так:

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

Вывод jq.Vpc.VpcIDинтерпретируется как json и сохраняется в переменной $vpcidдругого 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
1
18.03.2021, 23:16

Теги

Похожие вопросы