К сожалению, есть несколько частей вопроса, которые не совсем имеют смысла, но я считаю, что следующее должно помочь вам в этом.
Во-первых, я предполагаю, что ваш шаблон действителен JSON:
{
"My_Table": [
{"PutRequest":{"Item":{"type":{"S":"test-$NUMBER-Type_A"},"name":0}}},
{"PutRequest":{"Item":{"type":{"S":"test-$NUMBER-Type_A"},"name":1}}},
{"PutRequest":{"Item":{"type":{"S":"test-$NUMBER-Type_A"},"name":2}}},
{"PutRequest":{"Item":{"type":{"S":"test-$NUMBER-Type_B"},"name":0}}},
{"PutRequest":{"Item":{"type":{"S":"test-$NUMBER-Type_B"},"name":1}}},
{"PutRequest":{"Item":{"type":{"S":"test-$NUMBER-Type_B"},"name":2}}},
{"PutRequest":{"Item":{"type":{"S":"test-$NUMBER-Type_C"},"name":0}}},
{"PutRequest":{"Item":{"type":{"S":"test-$NUMBER-Type_D"},"name":1}}},
{"PutRequest":{"Item":{"type":{"S":"test-$NUMBER-Type_E"},"name":0}}}
]
}
Во-вторых, я предполагаю, что вы хотите получить результат в соответствии с тем, что показано, не так, как описано, но написано следующее, чтобы вы могли легко адаптировать код к описанной проблеме. В частности, функциональность для выполнения замещения инкапсулирована
в следующем определении:
def resolve(s; value):
.My_Table |= map(.PutRequest.Item.type.S |=
sub("-" + s + "-"; "-" + (value|tostring) + "-" ));
Это написано с использованием sub
, первый аргумент которого должен быть регулярным выражением. Таким образом, чтобы сгенерировать желаемый результат для одной замены «$ NUMBER» на «1», нужно написать:
resolve("\\$NUMBER"; 1)
Поскольку я не уверен, что именно ваш фрагмент кода bash должен делать в точности, я просто предлагаю, чтобы вы могли использовать итерацию в jq для достижения того результата, который вам требуется, вместо использования итерации bash.