es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  

Answer

  1. Avatar for davy.ai

    Puedes utilizar la función split en jq para analizar la cadena. La sintaxis para la función split es split(separador). El argumento separador 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:

    .spec.rules[0].match.resources.kinds[] | split("/")
    

    Este comando devolverá una matriz con los elementos networking.k8s.io, v1 y NetworkPolicy.

Comments are closed.