Добрый деньСтала перед мною, трудная, для меня задача. Надо к выводящимся результатам добавить строку.
Пример то что вылазит и к чему надо добавить строку
{
"data" : [
{
"{#NAME}" : "admin",
"sizeOnDisk" : 163840,
"empty" : false
},
{
"{#NAME}" : "blacklist",
"sizeOnDisk" : 7831552,
"empty" : false
},
{
"{#NAME}" : "eantifraud",
"sizeOnDisk" : 11108495360,
"empty" : false
}
],
"totalSize" : 27484880896,
"ok" : 1
}Хочу что бы "totalSize" : 27484880896, получился вместе с остальними JSONами
Так
{
"data" : [
{
"{#NAME}" : "admin",
"sizeOnDisk" : 163840,
"empty" : false
},
{
"{#NAME}" : "base2",
"sizeOnDisk" : 7831552,
"empty" : false
},
{
"{#NAME}" : "base",
"sizeOnDisk" : 11108495360,
"empty" : false
},
{
"{#NAME}" : "totalSize",
"sizeOnDisk" : 27484880896,
}
],
"totalSize" : 27484880896,
"ok" : 1
}
Кстати не важно будет он отображаться дальше или нет, главное что бы добавился ко всем{
"{#NAME}" : "totalSize",
"sizeOnDisk" : 27484880896,
}Возможно такое башем решить?
> Возможно такое башем решить?возможно, но ИМХО лучше перлом
и почему нельзя сразу вывести в нужном формате?
> Возможно такое башем решить?возможно в этой (нашей?) жизни всё возможно!?
#!/bin/shwhile read line; do
if [ "${line%% *}" = "\"totalSize\"" ]; then
tmp="${line##* }"
sub="${tmp%,}"
fi
done < text
while read line; do
if [ "${line}" = "}" ]; then
line="${line},"
fi
if [ "${line}" = "]," ]; then
echo -e "{\n"{#NAME}" : "totalSize",\n"sizeOnDisk" : ${sub}\n}"
fi
echo ${line}
done < text
форматирование теряется, но если не принципиально, то...
Предложили такое решение.
ИМХО, одна строкаsed '/],/s//{/;/"totalSize"/{s//\t "{#NAME}" : &,\n\t "sizeOnDisk"/;s/,$/\n\t}\n\t],/}'
> Предложили такое решение.
> ИМХО, одна строка
> sed '/],/s//{/;/"totalSize"/{s//\t "{#NAME}" : &,\n\t "sizeOnDisk"/;s/,$/\n\t}\n\t],/}'ну так не честно, михалыч, вон старался, чистый bash, а вы - sed, еще-б perlre... подстава.
> Предложили такое решение.
> ИМХО, одна строкаfix: ИМХО костыль :)