Skip to content

rasha108bik/grep

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

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

Watchers

Forks

Releases

No releases published

Packages

No packages published