The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Bash. Как добавить строку к выводу?"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Разное / Linux)
Изначальное сообщение [ Отслеживать ]

"Bash. Как добавить строку к выводу?"  +/
Сообщение от Dark Smoke (ok) on 04-Июл-15, 23:37 
Добрый день

Стала перед мною, трудная, для меня задача. Надо к выводящимся результатам добавить строку.

Пример то что вылазит и к чему надо добавить строку

{
    "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,
        }

Возможно такое башем решить?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Bash. Как добавить строку к выводу?"  +/
Сообщение от Pahanivo (ok) on 05-Июл-15, 12:39 
> Возможно такое башем решить?

возможно, но ИМХО лучше перлом
и почему нельзя сразу вывести в нужном формате?


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Bash. Как добавить строку к выводу?"  +/
Сообщение от михалыч (ok) on 05-Июл-15, 20:37 
> Возможно такое башем решить?

возможно в этой (нашей?) жизни всё возможно!?


#!/bin/sh

while 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


форматирование теряется, но если не принципиально, то...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Bash. Как добавить строку к выводу?"  +/
Сообщение от Dark Smoke (ok) on 05-Июл-15, 21:19 
Предложили такое решение.
ИМХО, одна строка

sed '/],/s//{/;/"totalSize"/{s//\t    "{#NAME}" : &,\n\t    "sizeOnDisk"/;s/,$/\n\t}\n\t],/}'

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Bash. Как добавить строку к выводу?"  +/
Сообщение от Аноним (??) on 05-Июл-15, 23:23 
> Предложили такое решение.
> ИМХО, одна строка
> sed '/],/s//{/;/"totalSize"/{s//\t    "{#NAME}" : &,\n\t    "sizeOnDisk"/;s/,$/\n\t}\n\t],/}'

ну так не честно, михалыч, вон старался, чистый bash, а вы - sed, еще-б perlre... подстава.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Bash. Как добавить строку к выводу?"  +/
Сообщение от Pahanivo (ok) on 06-Июл-15, 10:17 
> Предложили такое решение.
> ИМХО, одна строка

fix: ИМХО костыль :)


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру