Мне было интересно, есть ли решение для этого с помощью однострочной команды, но если нет, я бы хотел простейший сценарий bash
Вот возможное решение вашейпроблема:
Если ваш входной файл, например,
{
{"myid":"dummy"},
{"myid":"ymmud"},
{"myid":"dummy"},
{"myid":"ymmud"},
{"myid":"dummy"},
{"myid":"ymmud"}
}
, то следующий bash
script
while IFS= read -r line; do
echo $line | sed "s/dummy/`uuid`/g";
done < jsonfile
выведет
{
{"myid":"a1c3874c-601d-11e8-97bd-705ab6b2eca7"},
{"myid":"ymmud"},
{"myid":"a1c45e56-601d-11e8-922c-705ab6b2eca7"},
{"myid":"ymmud"},
{"myid":"a1c57390-601d-11e8-aa47-705ab6b2eca7"},
{"myid":"ymmud"}
}
Изначально в вашем вопросе говорилось о textfile
, следовательно, об этом конкретном решении, которое игнорирует формат.Если вы хотите специально манипулировать JSON, я рекомендую, например.jq
(apt-get install jq
).
по новому UUID
Пространство клавиш UUID (в зависимости от типа UUID) огромно.Это очень маловероятно, чтобы вызвать коллизий при небольшом объеме данных.