Практическая работа - парсинг текстовых файлов

1 мин на чтение (2.072 символов)

Задания к работе

Необходимо написать shell-скрипт, который обработает текстовый файл log.txt в формате Acсess log веб-сервера Apache и выведет в консоль информацию, которая описана в секции “Расшифровка”. Этот скрипт должен использовать стандартные инструменты shell (которые включают такие утилиты, как: cut, grep, sort, awk, date и др.), но не использовать другие языки программирования, такие как C, Perl, Python и др.

Файл состоит из записей, каждая из которых занимает одну строку.

Пример записи:

1
host-24-225-218-245.patmedia.net - - [01/Oct/2006:06:33:45 -0700] "GET /example/example.atom HTTP/1.1" 304 - "-" "NetNewsWire/2.0b37 (Mac OS X; Lite; http://ranchero.com/netnewswire/)"

Формат записи:

1
<хост клиента> - - [&lt;Штамп времени с временной зоной>] <Строка HTTP-запроса (тип, URL, версия)> <Код HTTP ответа> <Количество переданных байт или '-', если ответ не имеет тела> <Строка реферера ('-' означает прямой запрос без реферера)> <Название клиента (браузер)>

Пример расшифровки:

1
01/Oct/2006:06:33:45 -0700 с хоста host-24-225-218-245.patmedia.net по протоколу HTTP/1.1 был выполнен запрос типа GET для получения ресурса, находящегося по ссылке /example/example.atom. Код ответа на запрос от сервера: 304. Такой ответ не предполагает наличия тела ответа (количество переданных байт - 0). Запрос выполнялся напрямую, а не по ссылке с другого сайта (поле реферер - пустое). Клиент использовал для обращения программу NetNewsWire/2.0b37, ОС клиента: Mac OS X

Заания для самостоятельного выполнения

  1. Модифицируйте программу так, чтобы ей можно было передать один (необязательный) параметр, в котором указать код завершения операции. При указании этого параметра, программа фильтрует содержимое файла и выводить только те строчки, которые имеют именно этот код процесса.
  2. Добавьте в программу возможность указывать ключи (количество и наименования по вашему усмотрению) для фильтрации данных по любому полю.
  3. Дополнительно оценивается корректная работа программы с несколькими ключами одновременно.

Дата изменения: