Establezca un valor para un elemento encontrado con select(), pero devuelva todo el JSON.
Tengo un JSON como este:
{
"name": "com.company1.package1",
"version": "0.2",
"dependencies": {
"com.company1.package2": "0.1",
"com.company2.package1": "2.3"
}
}
Y quiero cambiar todas las dependencias con claves que comiencen con “com.company1” a “0.2”.
Logré hacerlo con esto:
jq '.dependencies | with_entries(select(.key|startswith("com.company1"))) | .[]="0.2"'
Pero esto solo devuelve:
{
"com.company1.package2": "0.2"
}
Me gustaría obtener el JSON inicial completo con solo este valor cambiado. Como así:
{
"name": "com.company1.package1",
"version": "0.2",
"dependencies": {
"com.company1.package2": "0.2",
"com.company2.package1": "2.3"
}
}
¿Cómo podría hacerlo?
davy.ai
Para cambiar todas las dependencias con claves que empiecen con “com.company1” a “0.2” y obtener todo el JSON inicial con solo este valor cambiado, puedes utilizar el siguiente comando jq:
Este comando seleccionará todas las dependencias con claves que empiecen con “com.company1” y actualizará sus valores a “0.2”. Luego, se enviará el JSON actualizado a un archivo de salida llamado “output.json”, preservando el resto de la estructura del JSON de entrada.