Нужно написать функцию, реализующую аналог консольной утилиты grep
Функция фильтрует строки, поступающие на стандартный вход и фильтрует их, согласно параметрам.
Перечисление параметров:
- invert — выводить строки, которые НЕ совпадают с шаблоном
- ignore_case — при сравнении шаблона не учитывать регистр
- count — выводить только число строк удовлетворивших шаблону
- line_number — перед срокой выводить также и ее номер (строки нумеруются с единицы) в виде "5:строка"
- context N — помимо строки удовлетворяющей шаблону вывести также и N строк до и N строк после нее если столько есть. Перед началом блока строк и после конца блока строк должна выводиться отдельная строка вида "--". Если соседние блоки пересекаются то их нужно объединять. Если используется флаг line_number, то строки контекста нумеруются так "5-строка".
- before_context N — аналогично context, но выводить нужно только строки ДО найденой.
- after_context N — аналогично context, но выводить нужно только строки ПОСЛЕ найденой.
- pattern str — строка, описывающая шаблон поиска. В строке могут использоваться специальные сиволы:
- "?" — один любой символ;
- "*" — ноль или несколько любых символов (но в рамках одной строки)
В файле grep.py указан шаблон функции, который необходимо заполнить вашим кодом. Шаблон берет на себя чтение из стандартного входа и разбор параметров, вам необходимо реализовать логику работы параметров.
Эта функция получит на вход итератор со строками из стандартного входа, на выход она должна отдать то, что должно в результате быть выведено на экран.
Если возникают вопросы по работе параметров - можно посмотреть как они работают в самой утилите grep.
К заданию прилагается несколько тестов. Тесты будут добавляться по мере нахождения популярных ошибок. Прохождение тестов не гарантирует правильное выполнение задания, но это необходимое условие. Если вы обнаружили ошибку в тесте (например, в оригинальной утилите параметр работает не так как в тесте) пишите в чат. Написание собственных тестов - приветствуется.