我正在尝试过滤此JSON output
的标记通过标签[]进行选择,并在密钥存在时显示所选值。
我的jq过滤器如下所示:
jq -r ".Reservations[]
| [.OwnerId,
.Instances[].InstanceId,
.Instances[].Placement.AvailabilityZone,
(.Instances[].Tags[]?|select(.Key==OtherTag)|.Value),
(.Instances[].Tags[]?|select(.Key==Name)|.Value) ]
| @csv"
输出看起来像这样
"xxxxxxxxxx9,i-d414ce0b,ap-southeast-2b,webserver2"
我希望它包含毫无根据的选择标记,并将其填入csv中的空字段 如下所示:
"xxxxxxxxxx9,i-d414ce0b,ap-southeast-2b,,webserver2"
我应该在jq中做些什么来实现呢?有人可以举个例子吗?
答案 0 :(得分:0)
不使用select/1
,而是使用filter/1
,其中:
def filter(f): if f then . else "" end;
答案 1 :(得分:0)
以下是使用 from_entries 处理.Tags
.Reservations[]
| .OwnerId as $owner
| .Instances[]
| .InstanceId as $id
| .Placement.AvailabilityZone as $az
| .Tags
| from_entries
| "\($owner),\($id),\($az),\(.OtherTag//""),\(.Name//"")"