我的JSON文件:
{
"MetricAlarms": [
{
"EvaluationPeriods": 2,
"AlarmActions": [
"this is causing me trouble"
],
"Threshold": 0.0,
"Dimensions": [
{
"Name": "DBInstanceIdentifier",
"Value": "db-master02"
}
],
"MetricName": "ReplicaLag"
}
]
}
我当前用于压缩JSON文件的命令(jq 1.3,现在无法升级):
cat $JSON_FILE |
jq -r '.MetricAlarms[] |
{ MetricName,
Threshold,
EvaluationPeriods,
AlarmActions
} +
( .Dimensions[] | { DimName: .Name, DimValue: .Value } )
'
产生
{
"DimName": "DBInstanceIdentifier",
"DimValue": "db-master02",
"AlarmActions": [
"this is causing me trouble"
],
"EvaluationPeriods": 2,
"Threshold": 0,
"MetricName": "ReplicaLag"
}
我真正想要的是什么:
{
"DimName": "DBInstanceIdentifier",
"DimValue": "db-master02",
"AlarmActions": "this is causing me trouble",
"EvaluationPeriods": 2,
"Threshold": 0,
"MetricName": "ReplicaLag"
}
我想显示没有数组的“AlarmActions”的值。
这似乎是一个简单的问题,但答案不包括在内。我试过以类似于我对待“尺寸”的方式处理“AlarmActions”。我已经尝试了我能想到的[],[0],句号,管道和函数调用的每个变体,但无济于事。我错过了什么?
答案 0 :(得分:2)
使用:
cat $JSON_FILE |
jq -r '.MetricAlarms[] |
{ MetricName,
Threshold,
EvaluationPeriods,
"AlarmActions" : .AlarmActions[0]
} +
( .Dimensions[] | { DimName: .Name, DimValue: .Value } )
'
即。不要使用AlarmActions
元素的快捷语法。