Files
eduplan-cpp-eltex/diag/tasks/08_bash/task.md
T

1.4 KiB

Задача 08 — bash: разбор лога доступа

Написать solution.sh, который принимает путь к файлу лога (формат nginx/apache access.log) и печатает ровно четыре строки:

TOTAL <число строк в файле>
TOP <ip> <число запросов>
TOP <ip> <число запросов>
TOP <ip> <число запросов>
5XX <число ответов со статусом 500-599>

Правила:

  • IP — первое поле строки;
  • TOP — три самых частых IP по убыванию числа запросов; при равенстве — по возрастанию строки IP (лексикографически);
  • если уникальных IP меньше трёх — печатать столько строк TOP, сколько есть;
  • файл может быть большим (миллион строк): построчный bash-цикл по строкам не пройдёт по времени — нужен awk/sort или один-два прохода;
  • пустой файл: TOTAL 0, 5XX 0, строк TOP нет.

Запуск: bash solution.sh access.log Проверка: python3 grade.py 08 (тест гоняет скрипт на фикстуре и на большом логе). Критерий: точное совпадение вывода, код возврата 0.