cgrep: Command line tool

[ gpl, program, utils ] [ Propose Tags ]

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.24, 6.6.25
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 Thu Feb 22 21:06:27 UTC 2018
Distributions Arch:6.6.25, NixOS:6.6.25
Executables cgrep
Downloads 17013 total (286 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
Last success reported on 2018-02-22 [all 2 reports]


Maintainer's Corner

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 <a href=""></a>


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