Skip to content

Latest commit

 

History

History
103 lines (77 loc) · 2.71 KB

README.md

File metadata and controls

103 lines (77 loc) · 2.71 KB

Cat & Grep

Table of contents

Introduction

Implementation of GNU cat and BSD grep.

Goals

  • Understand file processing in C
  • Implement error handling in C
  • Parsing of command line arguments
  • Become familiar with the regex.h
  • Implement integration tests

Build

$ git clone https://github.com/finchren/s21_cat_grep
$ cd s21_cat_grep/src/
$ make

S21_cat

s21_cat Usage

$ s21_cat [OPTION] [FILE] ...

s21_cat Options

No. Options Description
1 -b (GNU: --number-nonblank) numbers only non-empty lines
2 -e implies -v (GNU only: -E the same, but without implying -v) but also display end-of-line characters as $
3 -n (GNU: --number) number all output lines
4 -s (GNU: --squeeze-blank) squeeze multiple adjacent blank lines
5 -t implies -v (GNU: -T the same, but without implying -v) but also display tabs as ^I

s21_cat Integration tests

s21_cat fully replicates original GNU cat functionality, including all major flags. Before launching tests s21_cat executable must be built.
Integration tests are launched via bash script cat/test_cat.sh.

$sh ./test_cat.sh

Or

$make test_cat

This was developed on MacOS, some tests may fail on other systems

S21_grep

s21_grep Usage

s21_grep [OPTIONS] template [FILE] ...

s21_grep Options

No. Options Description
1 -e pattern
2 -i Ignore uppercase vs. lowercase.
3 -v Invert match.
4 -c Output count of matching lines only.
5 -l Output matching files only.
6 -n Precede each matching line with a line number.
7 -h Output matching lines without preceding them by file names.
8 -s Suppress error messages about nonexistent or unreadable files.
9 -f file Take regexes from a file.
10 -o Output the matched parts of a matching line.

s21_grep Integration tests

s21_grep replicated major BSD grep (2.5.1-FreeBSD) flags and their combinations listed above.

Integration tests are launched via C program test/test_combinations.c or grep/test_grep.sh bash script. Before launching tests s21_grep executable must be built. There are about ~30k tests.

$sh ./test_grep.sh

Or

$make test_grep

This was developed on MacOS, some tests may fail on other systems