Cgrep: a context-aware grep for source codes

README.md

CGrep: a context-aware grep for source codes

Hackage Join the chat at https://gitter.im/awgn/cgrep

Usage

Cgrep 6.6.25. Usage: cgrep [OPTION] [PATTERN] files...

cgrep [OPTIONS] [ITEM]

Pattern:

-f --file=FILE             Read PATTERNs from file (one per line)
-w --word                  Force word matching
-p --prefix                Force prefix matching
-s --suffix                Force suffix matching
-e --edit                  Use edit distance
-G --regex                 Use regex matching (posix)
-P --regex-pcre            Use regex matching (pcre)
-i --ignore-case           Ignore case distinctions

Context filters (generic):

-c --code                  Enable search in source code
-m --comment               Enable search in comments
-l --literal               Enable search in string literals

Semantic (generic):

-S --semantic              "code" pattern: _, _1, _2... (identifiers), $,
                           $1, $2... (optionals), ANY, KEY, STR, CHR, LIT,
                           NUM, HEX, OCT, OR. -> e.g. "_1(_1 && \$)" search
                           for move constructors, "struct OR class _ { OR :
                           OR <" search for a class declaration

C/C++ language:

  --identifier            Identifiers
  --keyword               Keywords
  --directive             Preprocessing directives
  --header                Headers names
  --number                Literal numbers
  --string                Literal strings
  --char                  Literal chars
  --oper                  Operators

Output control:

   --max-count=INT         Stop search in files after INT matches
   --language-filter=ITEM  Specify languages. ie: Cpp, +Haskell, -Makefile
   --language-force=ITEM   Force the language
   --language-map          Lists the language mappings
   --magic-filter=ITEM     Use unix magic as file-filter
-v --invert-match          Select non-matching lines
   --multiline=INT         Enable multi-line matching
-r --recursive             Enable recursive search (don't follow symlinks)
   --prune-dir=ITEM        Do not descend into dir
-R --deference-recursive   Recursive, follow symlinks

Output format:

   --show-match            Show list of matching tokens
   --color                 Use colors to highlight the matching strings
   --no-color              Do not use colors (override config file)
-h --no-filename           Suppress the file name prefix on output
   --no-numbers            Suppress both line and column numbers on output
   --no-column             Suppress the column number on output
   --count                 Print only a count of matching lines per file
   --filename-only         Print only the name of files containing matches
   --format=STRING         Format output. Var: #f #n #l #t ## #, #; #0
                           #1... e.g. "#f:#n #0 #1"
   --json                  Format output as json object
   --xml                   Format output as xml document
   --editor                Run the editor specified by EDITOR var., passing
                           the files that match
   --vim                   Run vim the editor passing the files that match

Concurrency:

-j --jobs=INT              Number of jobs
   --cores=INT             Number of physical processors utilized
   --chunk=INT             Specify the length of chunks
-a --asynch                Process chunks asynchronously

Miscellaneous:

-d --debug=INT             Debug level: 1, 2 or 3
   --no-shallow            Disable shallow-search 
-? --help                  Display help message
-V --version               Print version information
   --numeric-version       Print just the version number