JQ:显示单元素数组的contents/value
JQ: Show the contents/value of a single-element array
我的 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" 的值。
这似乎是一个简单的问题,但我却找不到答案。我曾尝试以类似于我对待 "Dimensions" 的方式对待 "AlarmActions"。我已经尝试了我能想到的 []、[0]、句点、管道和函数调用的所有变体,但都无济于事。我错过了什么?
使用:
cat $JSON_FILE |
jq -r '.MetricAlarms[] |
{ MetricName,
Threshold,
EvaluationPeriods,
"AlarmActions" : .AlarmActions[0]
} +
( .Dimensions[] | { DimName: .Name, DimValue: .Value } )
'
即不要对 AlarmActions
元素使用快捷语法。
我的 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" 的值。
这似乎是一个简单的问题,但我却找不到答案。我曾尝试以类似于我对待 "Dimensions" 的方式对待 "AlarmActions"。我已经尝试了我能想到的 []、[0]、句点、管道和函数调用的所有变体,但都无济于事。我错过了什么?
使用:
cat $JSON_FILE |
jq -r '.MetricAlarms[] |
{ MetricName,
Threshold,
EvaluationPeriods,
"AlarmActions" : .AlarmActions[0]
} +
( .Dimensions[] | { DimName: .Name, DimValue: .Value } )
'
即不要对 AlarmActions
元素使用快捷语法。