Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

grep

Нужно написать функцию, реализующую аналог консольной утилиты 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.

К заданию прилагается несколько тестов. Тесты будут добавляться по мере нахождения популярных ошибок. Прохождение тестов не гарантирует правильное выполнение задания, но это необходимое условие. Если вы обнаружили ошибку в тесте (например, в оригинальной утилите параметр работает не так как в тесте) пишите в чат. Написание собственных тестов - приветствуется.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages