Формат проведения проверочной работы

Проверочная работа будет проходить в удалённом режиме. Всем студентам будет одновременно выдано проверочное задание. Время выполнение задания — 1.5 часа с момента начала.

Задание для всех студентов выдаётся одинаковое. Совместное решение задач запрещено. При наличии признаков совместного решения всем участникам будет зачтена оценка 0.

Для каждого задания необходимо разработать Bash-скрипт, решающий поставленную задачу. Все скрипты необходимо объединить в архив и загрузить в качестве ответа на Moodle.

Проверяемые знания

  • Базовое использование командного интерфейса.
  • Понятие текущего рабочего каталога. Знание особенностей использования абсолютных и относительных путей. Изменение текущего рабочего каталога.
  • Манипулирование структурой каталогов файловой системы. Копирование, перемещение и удаление файлов и каталогов.
  • Понятие о типах команд в Bash. Чтение руководств и встроенной помощи в зависимости от типа команды.
  • Знание структуры файловой системы Linux: назначение каталогов и их структуры.
  • Перенаправление потоков ввода-вывода, использование конвееров. Знание типичных фильтров для обработки данных.
  • Расширение строк в Bash: расширение пути, расширение скобок, арифметическое расширение, расширение параметров, подстановка команд.
  • Написание скриптов на языке Bash.
  • Проверка качества исходного кода с помощью ShellCheck.

Задача

Реализуйте следующее приложение с помощью Bash-скрипта. Помимо самого скрипта Вам необходимо также предоставить текстовый документ, который описывает работу с данным скриптом. Если руководства по использованию скрипта нет, то за это будет снижена оценка.

Вам необходимо реализовать систему для анализа журналов проездов автомобилей через контрольно-пропускной пункт. В журнале указана следующая информация:

  • Время проезда автомобиля. Формат: ЧЧ:ММ, пример 07:53.
  • Направление проезда. 1 слово: заезд, выезд.
  • Номер автомобиля. 1 слово, формат: A537PT76.
  • Марка автомобиля. 1 слово, формат: ВАЗ.
  • Комментарий в произвольной форме. Проезд в компанию «Рога и копыта».

Данные поля разделяются запятой.

Журнал за каждый день записывается в отдельный файл, имя которого — дата в формате ГГГГ-ММ-ДД.csv, например 2021-11-10.log. Журналы верны, в них нет нарушений.

Архив с примером журналов можно скачать по ссылке.

Скрипт должен решать следующие задачи:

  • Для каждого отдельного дня высчитывать:
    • Количество машин, проехавших через КПП внутрь.
    • Количество машин, проехавших через ПКК наружу.
    • Количество отечественных машин, проехавших через КПП (в оба направления). Отечественными считаются марки ВАЗ, ГАЗ, УАЗ, AURUS, КАМАЗ, ЛИАЗ, ПАЗ.
  • Для журналов всех дней:
    • Разница между общим количеством автомобилей, заехавших на территорию, и выехавших с неё.
    • Количество автомобилей (в оба направления), проехавших в первой половине дня (до 12:00).
    • Количество автомобилей (в оба направления), проехавших во второй половине дня (после 12:00).

Дополнительно. Найти автомобили, которые проехали через КПП нечётное количество раз.