Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Unix Grep Lite CI Coverage Status

🧘🏼‍♀️ Unix Grep Lite

Легковесная реализация утилиты grep на Go с поддержкой основных флагов Unix grep.


✅ Поддерживаемые флаги

Флаг Описание Пример
-n, --line-number Показать номера строк echo -e "hello\nworld" | ./unix_grep_lite -n "world"
-v, --invert-match Инвертировать совпадения echo -e "hello\nworld" | ./unix_grep_lite -v "hello"
-c, --count Подсчитать совпадения echo -e "test\ntest\nother" | ./unix_grep_lite -c "test"
-i, --ignore-case Игнорировать регистр echo -e "Hello\nWORLD" | ./unix_grep_lite -i "hello"
-F, --fixed-strings Фиксированные строки echo -e "test.txt\ntest" | ./unix_grep_lite -F "test."
-A, --after-context N N строк после совпадения echo -e "a\nb\nc" | ./unix_grep_lite -A 1 "b"
-B, --before-context N N строк до совпадения echo -e "a\nb\nc" | ./unix_grep_lite -B 1 "b"
-C, --context N N строк до и после совпадения echo -e "a\nb\nc" | ./unix_grep_lite -C 1 "b"

▶️ Использование

  • Клонируйте репозиторий:
git clone https://github.com/alexey0b/unix_grep_lite
  • Соберите проект:
make build
  • Посмотрите все доступные команды
make help

Примеры использования утилиты на текстовых файлов из директории /example

Базовый поиск

make grep PATTERN="world" INPUT_FILE="example/text.txt"
# Output:
# world

Поиск с номерами строк

make grep PATTERN="world" FLAGS="-n" INPUT_FILE="example/text.txt"
# Output:
# 2:world

Подсчет совпадений

make grep PATTERN="test" FLAGS="-c" INPUT_FILE="example/text.txt"
# Output:
# 2

Контекст вокруг совпадения

make grep PATTERN="pattern" FLAGS="-C 1" INPUT_FILE="example/text.txt"
# Output:
# test
# pattern
# line1

Инвертированный поиск

make grep PATTERN="world" FLAGS="-v" INPUT_FILE="example/text.txt"
# Output:
# hello
# test
# pattern
...

Игнорирование регистра

make grep PATTERN="hello" FLAGS="-i" INPUT_FILE="example/text.txt"
# Output:
# hello
# Hello

Фиксированные строки (без regex)

make grep PATTERN="test." FLAGS="-F" INPUT_FILE="example/text.txt"
# Output:
# test.txt

Комбинированные флаги

make grep PATTERN="test" FLAGS="-niv" INPUT_FILE="example/text.txt"
# Output:
# 1:hello
# 2:world
# 4:pattern
...

🛠️ Технические ресурсы

Требования

  • Go 1.18+
  • Unix/Linux/macOS

Зависимости


📚 Полезные команды

# Посмотреть все доступные команды
make help

# Запустить тесты
make test

# Запустить линтер (должен быть установлен golangci-lint)
make lint 

Справочная информация:


About

A lightweight implementation of the `grep` utility on Go with support for the basic Unix grep flags.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages