在terraform或jq中使用单个元素连接数组
我有以下json数据,这些数据来自terraform中的在terraform或jq中使用单个元素连接数组,terraform,jq,Terraform,Jq,我有以下json数据,这些数据来自terraform中的data“external” { "ips": ["192.168.0.1", "192.168.0.2", "192.168.0.3"], "port": "8080" } 我想以ip:port 所需输出如下所示: ["192.168.0.1:8080", "192.168.0.2:8080", "192.168.0.3:8080"] 我试图在terraform中实现这一点,但我对使用
data“external”
{
"ips": ["192.168.0.1",
"192.168.0.2",
"192.168.0.3"],
"port": "8080"
}
我想以ip:port
所需输出如下所示:
["192.168.0.1:8080",
"192.168.0.2:8080",
"192.168.0.3:8080"]
我试图在terraform
中实现这一点,但我对使用jq
我能找到的最接近的东西是string
join
函数,它使用分隔符,但不会将端口添加到最后一个元素中我设法用terraform的join
找到了一个工作解决方案,然后手动将端口附加到最后一个IP,但我很乐意找到一个更干净的解决方案
地形片段
format("%s:%s",
join(
format(":%s,", port),
ips
),
port)
如果jq的输出格式也适合您,那么您可以使用:
jq '[ .ips[] + ":" + .port ]' input
.ips[]
在保留根对象作为输入的同时,在ip数组上迭代,以便.port
可用。然后,…+“:”+.port
表达式应用于每个元素,生成一个转换值流。这是一个地形片段,我认为在jq
[
"192.168.0.1:8080",
"192.168.0.2:8080",
"192.168.0.3:8080"
]