【发布时间】:2020-09-07 04:34:31
【问题描述】:
我最近问了几个 jq paring 问题,得到了所有完美的答案,我确实学到了很多东西。我希望这个问题仍然是可能的..
{
"kind":"ServiceList",
"apiVersion":"v1",
"items":[
{
"spec":{
"ports":[
{
"name":"https",
"protocol":"TCP",
"port":443,
"targetPort":6443
},
{
"name":"http",
"protocol":"TCP",
"port":80,
"targetPort":8080
}
],
"clusterIP":"10.233.0.1",
"type":"ClusterIP",
"sessionAffinity":"None"
},
"status":{
"loadBalancer":{
}
}
},
{
"spec":{
"ports":[
{
"protocol":"TCP",
"port":80,
"targetPort":80,
"nodePort":40001
}
],
"selector":{
"run":"my-httpd"
},
"clusterIP":"10.233.27.102",
"type":"NodePort",
"sessionAffinity":"None",
"externalTrafficPolicy":"Cluster"
},
"status":{
"loadBalancer":{
}
}
}
]
}
想要的输出是:
port01name=https;port01protocol=TCP;port01port=443;port01targetPort=6443;port02name=http;port02protocol=TCP;port02port=80;port02targetPort=8080
port01protocol=TCP;port01port=80;port01targetPort=80;port01nodePort=40001
它基本上将每个项目的多个端口连接到 1 行中,并将额外的端口 {n} 作为前缀。
在jq中还能做吗?
或者,输出可以在下面,然后我尝试对其进行操作。
portname=https;portprotocol=TCP;portport=443;porttargetPort=6443;portname=http;portprotocol=TCP;portport=80;porttargetPort=8080
portprotocol=TCP;portport=80;porttargetPort=80;portnodePort=400
【问题讨论】:
-
是的,两者都可以;事实上,两者都很容易。但是你遇到的具体问题是什么? (SO 不是免费的编程服务。)此外,对要求进行一些收紧是个好主意。
-
我是 jq 新手...我最好的是 '.items[] .spec.ports[] | to_entry |地图("port01(.key)=(.value)") |加入(“;”)'