Легковесная реализация утилиты 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 helpmake grep PATTERN="world" INPUT_FILE="example/text.txt"
# Output:
# worldmake grep PATTERN="world" FLAGS="-n" INPUT_FILE="example/text.txt"
# Output:
# 2:worldmake grep PATTERN="test" FLAGS="-c" INPUT_FILE="example/text.txt"
# Output:
# 2make grep PATTERN="pattern" FLAGS="-C 1" INPUT_FILE="example/text.txt"
# Output:
# test
# pattern
# line1make 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
# Hellomake grep PATTERN="test." FLAGS="-F" INPUT_FILE="example/text.txt"
# Output:
# test.txtmake grep PATTERN="test" FLAGS="-niv" INPUT_FILE="example/text.txt"
# Output:
# 1:hello
# 2:world
# 4:pattern
...- Go 1.18+
- Unix/Linux/macOS
- spf13/pflag - POSIX/GNU-style флаги
- stretchr/testify - Тестирование
# Посмотреть все доступные команды
make help
# Запустить тесты
make test
# Запустить линтер (должен быть установлен golangci-lint)
make lint
Справочная информация: