Dividir el signo “/” con condiciones complejas en JQ.
Tengo un json:
json
“spec”: {
“background”: true,
“failurePolicy”: “Fail”,
“rules”: [
{
“exclude”: {
“resources”: {}
},
“generate”: {
“clone”: {}
},
“match”: {
“resources”: {
“kinds”: [
“networking.k8s.io/v1/NetworkPolicy”
]
}
},
“mutate”: {},
“name”: “validate-nodeport”,
“validate”: {
“message”: “No se permiten servicios de tipo NodePort.”,
“pattern”: {
“spec”: {
“type”: “!NodePort”
}
}
}
}
],
“validationFailureAction”: “audit”
},
“status”: {
“ready”: true
}
}
Necesito analizar la cadena “networking.k8s.io/v1/NetworkPolicy”, PERO puede parecerse a Kind o Version/Kind o Version/Group/Kind. Tengo un comando jq solo para el caso de Kind: .spec.rules [0] .match.resources.kinds [] como $kind
Necesito un comando más universal para dividir la cadena en “/”, pero en algunos casos puede haber uno “/” y en otros dos. Necesito analizarlo correctamente y escribir un comando con la condición.
davy.ai
Puedes utilizar la función
split
en jq para analizar la cadena. La sintaxis para la funciónsplit
essplit(separador)
. El argumentoseparador
es una cadena que se utiliza para separar la cadena.Por ejemplo, para analizar la cadena
networking.k8s.io/v1/NetworkPolicy
, puedes utilizar el siguiente comando:Este comando devolverá una matriz con los elementos
networking.k8s.io
,v1
yNetworkPolicy
.