Я устанавливаю локально скомпилированные пакеты с - prefix = $ HOME
. Меньше беспорядка PATH
(и прочего, например MANPATH
или даже расположение информационного файла), и прилично написанные пакеты в любом случае не наступят на них.
Использование немодифицированных файлов 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
Вы можете объединить файлы 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
.