我有一个生成的文件(从amazon CLI),并希望提取一些属性。通常,使用JQ会很简单,但是JSON文件没有命名的顶级属性。
[
[
{
"State": "running",
"Type": "c4.xlarge",
"ID": "i-somehere",
"Env": [
"prd"
],
"Name": [
"some url here"
]
}
],
[
{
"State": "stopped",
"Type": "c4.xlarge",
"ID": "i-somehere",
"Env": [
"prd"
],
"Name": [
"some url here"
]
}
],
[
{
"State": "running",
"Type": "c4.2xlarge",
"ID": "i-somehere",
"Env": [
"prd"
],
"Name": [
"some url here"
]
}
]
].我想提取状态、环境和名称...这应该是简单的jq ".[].State“...但是,State嵌套在一个未命名的对象中。如何使用JQ进行提取?
发布于 2016-05-24 01:15:56
如果您希望所有具有这三个属性的对象都具有这三个属性,则无论这些对象出现在何处,都可以使用..。例如,对于给定的输入,
jq '.. | objects | select(has("State") or has("Env") or has("Name")) | {State, Env, Name}' 产生:
{
"State": "running",
"Env": [
"prd"
],
"Name": [
"some url here"
]
}
{
"State": "stopped",
"Env": [
"prd"
],
"Name": [
"some url here"
]
}
{
"State": "running",
"Env": [
"prd"
],
"Name": [
"some url here"
]
}发布于 2016-05-24 00:54:03
如果它们仅仅是您感兴趣的对象的数组的数组,您可以通过遍历每个数组将其展平到只有对象。然后获取您想要的属性。
.[][] | { State, Env, Name }https://stackoverflow.com/questions/37396184
复制相似问题