Математическая операция над вторым столбцом

Я устанавливаю локально скомпилированные пакеты с - prefix = $ HOME . Меньше беспорядка PATH (и прочего, например MANPATH или даже расположение информационного файла), и прилично написанные пакеты в любом случае не наступят на них.

2
02.08.2018, 14:44
2 ответа

Использование немодифицированных файлов JSON (перед выполнением sedнад ними )иjq:

Количество людей онлайн:

jq -s 'map(select(.online))|length' agent-*.txt

Количество свободных слотов:

jq -s '[.[].free]|add' agent-*.txt

Количество используемых слотов:

jq -s '[.[].used]|add' agent-*.txt

Все три как один документ JSON:

jq -s '{online: map(select(.online))|length, free: [.[].free]|add, used: [.[].used]|add}' agent-*.txt

То же, что и выше, но только цифры:

jq -s '(map(select(.online))|length), ([.[].free]|add), ([.[].used]|add)' agent-*.txt
2
27.01.2020, 22:09

Вы можете объединить файлы agent-*.txtи обработать их с помощью awk.

Обратите внимание на -F :, чтобы использовать полный столбец в качестве разделителя полей.

Неполный пример:

#!/bin/sh

awk -F : -f - agent-*.txt <<EOF
/^used:/{
    used+=\$2;
}
/^online:true/{
    online++;
}
END{
    printf("used: %d\n", used);
    printf("online: %d\n", online);
}
EOF

Вероятно, если вы аккуратно измените совпадающие выражения, вы сможете пропустить шаг sed.

0
27.01.2020, 22:09

Теги

Похожие вопросы