У меня есть следующий JSON, где я хочу изменить «тег» строк «изображения».
{
"taskDefinition": {
"containerDefinitions": [
{
"name": "php",
"image": "xxxxxx.dkr.ecr.eu-west-1.amazonaws.com/repo/php:latest",
"cpu": 0,
"memory": 512,
},
{
"name": "nginx",
"image": "xxxxxx.dkr.ecr.eu-west-1.amazonaws.com/repo/nginx:latest",
"cpu": 0,
"memory": 256,
}
],
"family": "service-be",
}
}
Должно стать:
{
"taskDefinition": {
"containerDefinitions": [
{
"name": "php",
"image": "xxxxxx.dkr.ecr.eu-west-1.amazonaws.com/repo/php:new",
"cpu": 0,
"memory": 512,
},
{
"name": "nginx",
"image": "xxxxxx.dkr.ecr.eu-west-1.amazonaws.com/repo/nginx:new",
"cpu": 0,
"memory": 256,
}
],
"family": "service-be",
}
}
Конечно, "последним" может быть что угодно.
До сих пор я нашел следующую подпрограмму regex для изменения строк.
'.taskDefinition.containerDefinitions[].image | sub("(?<repo>.*:).*"; \(.repo)new")'
Но я хочу отредактировать их на месте и сохранить весь JSON.
До сих пор мои попытки изменить значение были безуспешными.
Я могу изменить значение изображения на строку исправления, но не на замененное исходное значение.
Я пробовал несколько вариантов этого:
'.taskDefinition.containerDefinitions[].image |= . | sub("(?<repo>.*:).*"; "\(.repo)new")'
Кажется, что версия, которую я могу просто использовать (в конвейерах Bitbucket), не имеет функции прогулки, поэтому я бы ее избегал.