【发布时间】:2023-03-24 14:02:01
【问题描述】:
以下命令通过调用 jq 4 次来更新 AWS Route 53 JSON 模板中的 4 个元素:
cat x.json | jq '.ChangeBatch.Changes[].Action = "UPSERT"'|\
jq '.ChangeBatch.Changes[].ResourceRecordSet.Name = "host.domain"'|\
jq '.ChangeBatch.Changes[].ResourceRecordSet.Type = "A"'|\
jq '.ChangeBatch.Changes[].ResourceRecordSet.ResourceRecords[].TTL ="300"'\|
jq '.ChangeBatch.Changes[].ResourceRecordSet.ResourceRecords[].Value ="10.120.0.1"'
产生以下正确输出:
{
"HostedZoneId": "",
"ChangeBatch": {
"Comment": "",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "host.domain",
"Type": "A",
"SetIdentifier": "",
"Weight": 0,
"Region": "",
"GeoLocation": {
"ContinentCode": "",
"CountryCode": "",
"SubdivisionCode": ""
},
"Failover": "",
"TTL": 0,
"ResourceRecords": [
{
"Value": "10.120.0.1",
"TTL": "300"
}
有没有办法通过一次调用 jq 来更新所有 4 个字段?
【问题讨论】:
-
显示的输出是无效的 JSON。此外,如果 x.json 太长而无法包含,请提供一个极简示例。请修复。
标签: json amazon-web-services jq