Если существует возможность того, что группы имен фаз начинаются с 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
Примерно так:
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