cgrep: Command line tool

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]


Cgrep: a context-aware grep for source codes

[Skip to Readme]


Versions 6.4, 6.4.1, 6.4.2, 6.4.3,, 6.4.4, 6.4.5, 6.4.6, 6.4.7, 6.4.8, 6.4.9, 6.4.10, 6.4.11, 6.4.12, 6.4.13, 6.4.14, 6.4.15, 6.4.16, 6.4.17, 6.4.18, 6.4.19, 6.4.20, 6.4.21, 6.4.22, 6.5.0, 6.5.1, 6.5.2, 6.5.3, 6.5.4, 6.5.5, 6.5.6, 6.5.7, 6.5.8, 6.5.9, 6.5.10, 6.5.11, 6.5.12, 6.5.13, 6.5.15, 6.6, 6.6.1, 6.6.2, 6.6.3, 6.6.4, 6.6.7, 6.6.8, 6.6.9, 6.6.10, 6.6.11, 6.6.12, 6.6.13, 6.6.14, 6.6.15, 6.6.16, 6.6.17, 6.6.20, 6.6.22, 6.6.23, 6.6.23, 6.6.24, 6.6.25, 6.6.30, 6.6.32, 8.0.0, 8.1.0
Change log None available
Dependencies aeson, ansi-terminal, array, async, base (<5.0), bytestring, cmdargs, containers, directory, dlist, either, filepath, ghc-prim, mtl, process, regex-base, regex-pcre, regex-posix, safe, split, stm, stringsearch, transformers, unicode-show, unix-compat, unordered-containers, utf8-string, yaml [details]
License GPL-2.0-only
Author Nicola Bonelli
Maintainer Nicola Bonelli <>
Category Utils
Home page
Uploaded by NicolaBonelli at 2018-02-22T21:03:00Z


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Readme for cgrep-6.6.23

[back to package description]

CGrep: a context-aware grep for source codes

Hackage Join the chat at


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

cgrep [OPTIONS] [ITEM]


-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


-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


-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