Skip to content

Implementation of cat and grep utilities in C language.

Notifications You must be signed in to change notification settings

HubertFurr/s21_SimpleBashUtils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Simple Bash Utils

Оглавление

Введение

Реализация утилит cat и grep на языке программирования Си стандарта C11. Для регулярных выражений используется библиотека regex.

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

cat [OPTION] [FILE]...

cat Опции

Опции Описание
1 -b (GNU: --number-nonblank) нумерует только непустые строки
2 -e предполагает и -v (GNU only: -E то же самое, но без применения -v) также отображает символы конца строки как $
3 -n (GNU: --number) нумерует все выходные строки
4 -s (GNU: --squeeze-blank) сжимает несколько смежных пустых строк
5 -t предполагает и -v (GNU: -T то же самое, но без применения -v) также отображает табы как ^I

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

grep [options] template [file_name]

grep Опции

Опции Описание
1 -e Шаблон
2 -i Игнорирует различия регистра.
3 -v Инвертирует смысл поиска соответствий.
4 -c Выводит только количество совпадающих строк.
5 -l Выводит только совпадающие файлы.
6 -n Предваряет каждую строку вывода номером строки из файла ввода.
7 -h Выводит совпадающие строки, не предваряя их именами файлов.
8 -s Подавляет сообщения об ошибках о несуществующих или нечитаемых файлах.
9 -f file Получает регулярные выражения из файла.
10 -o Печатает только совпадающие (непустые) части совпавшей строки.

Build

Cat

$ git clone [email protected]:HubertFurr/s21_SimpleBashUtils.git
$ cd s21_SimpleBashUtils/src/cat
$ make

Grep

$ git clone [email protected]:HubertFurr/s21_SimpleBashUtils.git
$ cd s21_SimpleBashUtils/src/grep
$ make

Tests

Unit-тесты реализованы при помощи скриптов на python (src/cat/tests/test_cat.py и src/grep/tests/test_grep.py). Тесты сравнивают результаты работы стандартных cat и grep с результатами нашей реализации s21_cat и s21_grep через diff.

Для остановки запущенных тестов необходимо нажать q

Cat

$ git clone [email protected]:HubertFurr/s21_SimpleBashUtils.git
$ cd s21_SimpleBashUtils/src/cat
$ make test

Grep

$ git clone [email protected]:HubertFurr/s21_SimpleBashUtils.git
$ cd s21_SimpleBashUtils/src/grep
$ make test

Дополнительные режимы тестирования

make test_mac - запуск тестов с проверками на fsanitize

make test_linux - запуск тестов с проверками через valgrind

make test_hard - запуск случайных тестов, будет осуществлять полный перебор всех возможных комбинаций флагов со случайными файлами

Кроме того, скрипты test_cat.py и test_grep.py позволяют конфигурировать отображение и какие проверки требуются, путем установки флагов в начале скрипта. Например, можно включить проверки через утилиту leaks.

About

Implementation of cat and grep utilities in C language.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published