将输出从 jq 转换为数组

convert the output from jq to array

我在 aws 帐户中有 dynamodb table,我想根据特定条件对其进行过滤并以数组形式获取结果

下面是使用 jq

的 aws cli 查询
aws dynamodb scan  --table-name sample-table  | jq .Items | jq 'map(select(.VpcId.S != "None")) ' | jq  .[].VpcId.S

这是我得到的输出:


"vpc-yyyyyyyyyyyyyyyyy"
"vpc-zzzzzzzzzzzzzzzzz"
"vpc-XXXXXXXXXxxxxxxxx"

我希望输出为

[
"vpc-yyyyyyyyyyyyyyyyy",
"vpc-zzzzzzzzzzzzzzzzz",
"vpc-XXXXXXXXXxxxxxxxx"
]

这样我就可以将它传递给 terraform。

下面是实际命令的输出

aws dynamodb scan  --table-name sample-table

{
"Items": [
  {
   
    "VpcId": {
      "S": "vpc-yyyyyyyyyyyyyyyyy"
    }
  },
    {
   
    "VpcId": {
      "S": "None"
    }
  },
  {
   
    "VpcId": {
      "S": "vpc-xxxxxxxxxxxxxxxxx"
    }
  },
  }
]
}

.[].VpcId.S 替换为 map(.VpcId.S).[] 语法从数组中取出元素。


您可以通过这种方式将不同的 jq 过滤器组合在一起:

.Items | map(select(.VpcId.S != "None") | .VpcId.S)