1UGREP(1)                         User Commands                        UGREP(1)
2
3
4

NAME

6       ugrep, ug -- file pattern searcher
7

SYNOPSIS

9       ugrep [OPTIONS] [-A NUM] [-B NUM] [-C NUM] [-y] [-Q|PATTERN] [-f FILE]
10             [-e PATTERN] [-N PATTERN] [-t TYPES] [-g GLOBS] [--sort[=KEY]]
11             [--color[=WHEN]|--colour[=WHEN]] [--pager[=COMMAND]] [FILE ...]
12

DESCRIPTION

14       The  ugrep utility searches any given input files, selecting lines that
15       match one or more patterns.  By default, a  pattern  matches  an  input
16       line  if the regular expression (RE) matches the input line.  A pattern
17       matches multiple input lines if the RE in the pattern  matches  one  or
18       more newlines in the input.  An empty pattern matches every line.  Each
19       input line that matches at least one of the patterns is written to  the
20       standard output.
21
22       The  ug  command  is intended for interactive searching, using a .ugrep
23       configuration file located in the working directory or home  directory,
24       see  CONFIGURATION.  ug is equivalent to ugrep --config and sorts files
25       by name by default.
26
27       ugrep accepts input of various encoding formats and normalizes the out‐
28       put  to UTF-8.  When a UTF byte order mark is present in the input, the
29       input is automatically normalized; otherwise, ugrep assumes  the  input
30       is ASCII, UTF-8, or raw binary.  An input encoding format may be speci‐
31       fied with option --encoding.
32
33       If no FILE arguments are specified and standard input is  read  from  a
34       terminal,  recursive  searches are performed as if -r is specified.  To
35       force reading from standard input, specify `-' as a FILE argument.
36
37       Directories specified as FILE arguments are searched without  recursing
38       deeper  into  subdirectories, unless -R, -r, or -2...-9 is specified to
39       search subdirectories.
40
41       Hidden files and directories are ignored in recursive searches.  Option
42       -.  (--hidden)  includes  hidden  files  and  directories  in recursive
43       searches.
44
45       A query interface is opened with -Q (--query) to interactively  specify
46       search  patterns and view search results.  Note that a PATTERN argument
47       cannot be specified in this case.  To specify one or more patterns with
48       -Q to start searching, use -e PATTERN.
49
50       Option  -f  FILE  matches patterns specified in FILE.  If FILE is large
51       and defines complex regular expression patterns, then option  -P  (Perl
52       matching) may improve performance (this omits POSIX DFA construction.)
53
54       ugrep --help WHAT displays help on options related to WHAT; --help for‐
55       mat displays help on --format and --replace  formatting;  --help  regex
56       displays  help  on  regular  expression  syntax and conventions; --help
57       globs displays help on glob patterns to select files to search;  --help
58       fuzzy displays help on fuzzy (approximate) searching.
59
60       The following options are available:
61
62       -A NUM, --after-context=NUM
63              Output  NUM  lines  of  trailing  context  after matching lines.
64              Places a --group-separator between contiguous groups of matches.
65              If  -o  is  specified,  output the match with context to fit NUM
66              columns after the match or shortens the match.  See also options
67              -B, -C and -y.
68
69       -a, --text
70              Process a binary file as if it were text.  This is equivalent to
71              the --binary-files=text option.  This option might output binary
72              garbage to the terminal, which can have problematic consequences
73              if the terminal driver interprets some of it as commands.
74
75       --and [-e] PATTERN ... -e PATTERN
76              Specify additional patterns to match.  Patterns must  be  speci‐
77              fied  with -e.  Each -e PATTERN following this option is consid‐
78              ered an alternative pattern to match, i.e.  each  -e  is  inter‐
79              preted as an OR pattern.  For example, -e A -e B --and -e C -e D
80              matches lines with (`A' or `B') and (`C'  or  `D').   Note  that
81              multiple  -e PATTERN are alternations that bind more tightly to‐
82              gether than --and.  Option --stats displays the search  patterns
83              applied.   See also options --not, --andnot, --bool, --files and
84              --lines.
85
86       --andnot [-e] PATTERN
87              Combines --and --not.  See also options --and, --not and --bool.
88
89       -B NUM, --before-context=NUM
90              Output NUM lines  of  leading  context  before  matching  lines.
91              Places a --group-separator between contiguous groups of matches.
92              If -o is specified, output the match with  context  to  fit  NUM
93              columns  before  the  match or shortens the match.  See also op‐
94              tions -A, -C and -y.
95
96       -b, --byte-offset
97              The offset in bytes of a matched line is displayed in  front  of
98              the  respective  matched line.  If -u is specified, displays the
99              offset for each pattern matched on the same line.  Byte  offsets
100              are exact for ASCII, UTF-8 and raw binary input.  Otherwise, the
101              byte offset in the UTF-8 normalized input is displayed.
102
103       --binary-files=TYPE
104              Controls searching  and  reporting  pattern  matches  in  binary
105              files.  TYPE can be `binary', `without-match`, `text`, `hex` and
106              `with-hex'.  The default is `binary' to search binary files  and
107              to report a match without displaying the match.  `without-match'
108              ignores binary matches.  `text' treats all binary files as text,
109              which  might  output  binary  garbage to the terminal, which can
110              have problematic consequences if the terminal driver  interprets
111              some  of it as commands.  `hex' reports all matches in hexadeci‐
112              mal.  `with-hex' only reports  binary  matches  in  hexadecimal,
113              leaving  text  matches alone.  A match is considered binary when
114              matching a zero byte or invalid UTF.  Short options are -a,  -I,
115              -U, -W and -X.
116
117       --bool, -%
118              Specifies  Boolean  query  patterns.  A Boolean query pattern is
119              composed of `AND', `OR', `NOT' operators and grouping  with  `('
120              `)'.   Spacing  between subpatterns is the same as `AND', `|' is
121              the same as `OR' and a `-' is the same as `NOT'.  The `OR' oper‐
122              ator  binds  more  tightly than `AND'.  For example, --bool 'A|B
123              C|D' matches lines with (`A' or `B') and (`C' or `D'), --bool 'A
124              -B'  matches lines with `A' and not `B'.  Operators `AND', `OR',
125              `NOT' require proper spacing.  For example, --bool 'A OR B AND C
126              OR  D'  matches lines with (`A' or `B') and (`C' or `D'), --bool
127              'A AND NOT B' matches lines with `A' without `B'.   Quoted  sub‐
128              patterns  are matched literally as strings.  For example, --bool
129              'A "AND"|"OR"' matches lines with `A' and also either  `AND'  or
130              `OR'.   Parenthesis  are used for grouping.  For example, --bool
131              '(A B)|C' matches lines with `A' and `B',  or  lines  with  `C'.
132              Note that all subpatterns in a Boolean query pattern are regular
133              expressions, unless -F is specified.  Options -E, -F, -G, -P and
134              -Z  can  be combined with --bool to match subpatterns as strings
135              or regular expressions (-E is the default.)   This  option  does
136              not  apply  to  -f  FILE  patterns.  Option --stats displays the
137              search patterns applied.   See  also  options  --and,  --andnot,
138              --not, --files and --lines.
139
140       --break
141              Adds  a  line  break between results from different files.  This
142              option is enabled by --pretty when the output is sent to a  ter‐
143              minal.
144
145       -C NUM, --context=NUM
146              Output  NUM  lines  of  leading and trailing context surrounding
147              each matching line.  Places a --group-separator between contigu‐
148              ous  groups  of  matches.   If -o is specified, output the match
149              with context to fit NUM columns before and after  the  match  or
150              shortens the match.  See also options -A, -B and -y.
151
152       -c, --count
153              Only  a  count  of selected lines is written to standard output.
154              If -o or -u is specified, counts the number of patterns matched.
155              If -v is specified, counts the number of non-matching lines.  If
156              --tree is specified, outputs directories in a tree-like format.
157
158       --color[=WHEN], --colour[=WHEN]
159              Mark up the matching text with  the  expression  stored  in  the
160              GREP_COLOR  or  GREP_COLORS  environment  variable.  WHEN can be
161              `never', `always', or `auto', where `auto' marks up matches only
162              when output on a terminal.  The default is `auto'.
163
164       --colors=COLORS, --colours=COLORS
165              Use COLORS to mark up text.  COLORS is a colon-separated list of
166              one or more parameters `sl='  (selected  line),  `cx='  (context
167              line),  `mt='  (matched  text),  `ms='  (match  selected), `mc='
168              (match context), `fn=' (file name), `ln=' (line  number),  `cn='
169              (column number), `bn=' (byte offset), `se=' (separator).  Param‐
170              eter values are ANSI SGR color codes or `k' (black), `r'  (red),
171              `g'  (green),  `y'  (yellow),  `b'  (blue),  `m'  (magenta), `c'
172              (cyan), `w' (white).  Upper case specifies background colors.  A
173              `+'  qualifies a color as bright.  A foreground and a background
174              color may be combined with font  properties  `n'  (normal),  `f'
175              (faint), `h' (highlight), `i' (invert), `u' (underline).  Param‐
176              eter `hl' enables file name hyperlinks.  Parameter `rv' reverses
177              the `sl=' and `cx=' parameters when option -v is specified.  Se‐
178              lectively overrides GREP_COLORS.
179
180       --config[=FILE], ---[FILE]
181              Use configuration FILE.  The  default  FILE  is  `.ugrep'.   The
182              working  directory  is checked first for FILE, then the home di‐
183              rectory.  The options specified in the  configuration  FILE  are
184              parsed first, followed by the remaining options specified on the
185              command line.
186
187       --confirm
188              Confirm actions in -Q query mode.  The default is confirm.
189
190       --cpp  Output file matches in C++.  See also options --format and -u.
191
192       --csv  Output file matches in CSV.  If -H, -n, -k, or -b is  specified,
193              additional values are output.  See also options --format and -u.
194
195       -D ACTION, --devices=ACTION
196              If  an  input  file  is  a device, FIFO or socket, use ACTION to
197              process it.  By default, ACTION is `skip', which means that  de‐
198              vices  are  silently skipped.  If ACTION is `read', devices read
199              just as if they were ordinary files.
200
201       -d ACTION, --directories=ACTION
202              If an input file is a directory, use ACTION to process  it.   By
203              default,  ACTION  is `skip', i.e., silently skip directories un‐
204              less specified on the command line.  If ACTION is  `read',  warn
205              when  directories  are  read  as input.  If ACTION is `recurse',
206              read all files under each directory, recursively, following sym‐
207              bolic  links  only  if  they  are  on the command line.  This is
208              equivalent to the -r  option.   If  ACTION  is  `dereference-re‐
209              curse',  read  all files under each directory, recursively, fol‐
210              lowing symbolic links.  This is equivalent to the -R option.
211
212       --depth=[MIN,][MAX], -1, -2, -3, ... -9, --10, --11, --12, ...
213              Restrict recursive searches from MIN  to  MAX  directory  levels
214              deep,  where  -1 (--depth=1) searches the specified path without
215              recursing into subdirectories.  Note that -3 -5, -3-5,  and  -35
216              search 3 to 5 levels deep.  Enables -r if -R or -r is not speci‐
217              fied.
218
219       --dotall
220              Dot `.' in regular expressions matches anything, including  new‐
221              line.  Note that `.*' matches all input and should not be used.
222
223       -E, --extended-regexp
224              Interpret  patterns as extended regular expressions (EREs). This
225              is the default.
226
227       -e PATTERN, --regexp=PATTERN
228              Specify a PATTERN used during the search of the input: an  input
229              line  is  selected  if it matches any of the specified patterns.
230              Note that longer patterns take precedence over shorter patterns.
231              This  option is most useful when multiple -e options are used to
232              specify multiple patterns, when a pattern  begins  with  a  dash
233              (`-'),  to  specify  a pattern after option -f or after the FILE
234              arguments.
235
236       --encoding=ENCODING
237              The encoding format of the input.  The default ENCODING  is  bi‐
238              nary  and  UTF-8 which are the same.  Note that option -U speci‐
239              fies binary PATTERN matching (text  matching  is  the  default.)
240              ENCODING   can   be:   `binary',   `ASCII',  `UTF-8',  `UTF-16',
241              `UTF-16BE',  `UTF-16LE',   `UTF-32',   `UTF-32BE',   `UTF-32LE',
242              `LATIN1',      `ISO-8859-1',     `ISO-8859-2',     `ISO-8859-3',
243              `ISO-8859-4',    `ISO-8859-5',    `ISO-8859-6',    `ISO-8859-7',
244              `ISO-8859-8',    `ISO-8859-9',   `ISO-8859-10',   `ISO-8859-11',
245              `ISO-8859-13',  `ISO-8859-14',   `ISO-8859-15',   `ISO-8859-16',
246              `MAC',   `MACROMAN',   `EBCDIC',   `CP437',   `CP850',  `CP858',
247              `CP1250',  `CP1251',  `CP1252',  `CP1253',  `CP1254',  `CP1255',
248              `CP1256', `CP1257', `CP1258', `KOI8-R', `KOI8-U', `KOI8-RU'.
249
250       --exclude=GLOB
251              Skip files whose name matches GLOB using wildcard matching, same
252              as -g ^GLOB.  GLOB can use **, *, ?, and [...] as wildcards  and
253              \  to  quote  a wildcard or backslash character literally.  When
254              GLOB contains a `/',  full  pathnames  are  matched.   Otherwise
255              basenames  are  matched.  When GLOB ends with a `/', directories
256              are excluded as if --exclude-dir is specified.  Otherwise  files
257              are  excluded.   Note that --exclude patterns take priority over
258              --include patterns.  GLOB should  be  quoted  to  prevent  shell
259              globbing.  This option may be repeated.
260
261       --exclude-dir=GLOB
262              Exclude  directories  whose  name  matches  GLOB  from recursive
263              searches, same as -g ^GLOB/.  GLOB can use **, *, ?,  and  [...]
264              as  wildcards  and  \ to quote a wildcard or backslash character
265              literally.   When  GLOB  contains  a  `/',  full  pathnames  are
266              matched.   Otherwise  basenames  are  matched.   Note that --ex‐
267              clude-dir patterns take priority  over  --include-dir  patterns.
268              GLOB  should  be  quoted to prevent shell globbing.  This option
269              may be repeated.
270
271       --exclude-from=FILE
272              Read the globs from FILE and skip files  and  directories  whose
273              name  matches  one  or more globs.  A glob can use **, *, ?, and
274              [...] as wildcards and \ to quote a wildcard or backslash  char‐
275              acter literally.  When a glob contains a `/', full pathnames are
276              matched.  Otherwise basenames are matched.   When  a  glob  ends
277              with  a  `/',  directories  are  excluded as if --exclude-dir is
278              specified.  Otherwise files are excluded.  A glob starting  with
279              a  `!'  overrides  previously-specified  exclusions by including
280              matching files.  Lines starting with a `#' and  empty  lines  in
281              FILE  are  ignored.  When FILE is a `-', standard input is read.
282              This option may be repeated.
283
284       --exclude-fs=MOUNTS
285              Exclude  file  systems  specified  by  MOUNTS   from   recursive
286              searches,  MOUNTS  is  a comma-separated list of mount points or
287              pathnames of directories  on  file  systems.   Note  that  --ex‐
288              clude-fs  mounts  take  priority over --include-fs mounts.  This
289              option may be repeated.
290
291       -F, --fixed-strings
292              Interpret pattern as a set of fixed strings, separated  by  new‐
293              lines,  any  of which is to be matched.  This makes ugrep behave
294              as fgrep.  If a PATTERN is specified, or -e PATTERN or  -N  PAT‐
295              TERN,  then this option has no effect on -f FILE patterns to al‐
296              low -f FILE patterns to narrow or widen the scope of the PATTERN
297              search.
298
299       -f FILE, --file=FILE
300              Read  newline-separated patterns from FILE.  White space in pat‐
301              terns is significant.  Empty lines in FILE are ignored.  If FILE
302              does  not  exist,  the GREP_PATH environment variable is used as
303              path to FILE.   If  that  fails,  looks  for  FILE  in  /usr/lo‐
304              cal/share/ugrep/patterns.  When FILE is a `-', standard input is
305              read.  Empty files contain no patterns; thus nothing is matched.
306              This option may be repeated.
307
308       --filter=COMMANDS
309              Filter files through the specified COMMANDS first before search‐
310              ing.  COMMANDS is a comma-separated list of  `exts:command  [op‐
311              tion  ...]',  where `exts' is a comma-separated list of filename
312              extensions and `command' is a filter utility.  The filter  util‐
313              ity  should  read from standard input and write to standard out‐
314              put.  Files matching one of `exts' are filtered.  When `exts' is
315              `*',  files  with  non-matching extensions are filtered.  One or
316              more `option' separated by spacing may be specified,  which  are
317              passed  verbatim to the command.  A `%' as `option' expands into
318              the pathname to search.  For example, --filter='pdf:pdftotext  %
319              -'  searches PDF files.  The `%' expands into a `-' when search‐
320              ing standard input.  Option --label=.ext may be used to  specify
321              extension `ext' when searching standard input.
322
323       --filter-magic-label=[+]LABEL:MAGIC
324              Associate  LABEL  with files whose signature "magic bytes" match
325              the MAGIC regex pattern.  Only files that have no  filename  ex‐
326              tension  are  labeled,  unless  +LABEL is specified.  When LABEL
327              matches an extension specified in --filter=COMMANDS, the  corre‐
328              sponding command is invoked.  This option may be repeated.
329
330       --format=FORMAT
331              Output    FORMAT-formatted    matches.    For   example   --for‐
332              mat='%f:%n:%O%~' outputs matching lines `%O' with filename  `%f`
333              and line number `%n' followed by a newline `%~'.  If -P is spec‐
334              ified, FORMAT may include `%1' to `%9', `%[NUM]#' and `%[NAME]#'
335              to  output  group  captures.   A  `%%'  outputs `%'.  See `ugrep
336              --help format' and `man ugrep' section FORMAT for details.  When
337              option  -o is specified, option -u is also enabled.  Context op‐
338              tions -A, -B, -C and -y are ignored.
339
340       --free-space
341              Spacing (blanks and tabs) in regular expressions are ignored.
342
343       -G, --basic-regexp
344              Interpret patterns as basic  regular  expressions  (BREs),  i.e.
345              make ugrep behave as traditional grep.
346
347       -g GLOBS, --glob=GLOBS
348              Search  only  files whose name matches the specified comma-sepa‐
349              rated list of GLOBS, same as --include='glob' for each `glob' in
350              GLOBS.   When a `glob' is preceded by a `!' or a `^', skip files
351              whose name  matches  `glob',  same  as  --exclude='glob'.   When
352              `glob'  contains  a  `/', full pathnames are matched.  Otherwise
353              basenames are matched.  When `glob' ends with a `/', directories
354              are    matched,   same   as   --include-dir='glob'   and   --ex‐
355              clude-dir='glob'.  A leading `/' matches the working  directory.
356              This option may be repeated and may be combined with options -M,
357              -O and -t to expand searches.  See `ugrep --help globs' and `man
358              ugrep' section GLOBBING for details.
359
360       --group-separator[=SEP]
361              Use  SEP as a group separator for context options -A, -B and -C.
362              The default is a double hyphen (`--').
363
364       -H, --with-filename
365              Always print the filename with output lines.  This  is  the  de‐
366              fault when there is more than one file to search.
367
368       -h, --no-filename
369              Never  print  filenames  with output lines.  This is the default
370              when there is only one file (or only standard input) to search.
371
372       --heading, -+
373              Group matches per file.  Adds a heading and a line break between
374              results  from  different  files.   This  option  is  enabled  by
375              --pretty when the output is sent to a terminal.
376
377       --help [WHAT], -? [WHAT]
378              Display a help message, specifically on WHAT when specified.  In
379              addition, `--help format' displays an overview of FORMAT fields,
380              `--help regex' displays an overview of regular  expressions  and
381              `--help  globs'  displays an overview of glob syntax and conven‐
382              tions.
383
384       --hexdump=[1-8][a][bch][A[NUM]][B[NUM]][C[NUM]]
385              Output matches in 1 to 8 columns of 8 hexadecimal  octets.   The
386              default  is 2 columns or 16 octets per line.  Option `a' outputs
387              a `*' for all hex lines that are identical to the  previous  hex
388              line,  `b'  removes  all space breaks, `c' removes the character
389              column, `h' removes hex spacing, `A'  includes  up  to  NUM  hex
390              lines  after  the match, `B' includes up to NUM hex lines before
391              the match and `C' includes up to NUM hex  lines.   When  NUM  is
392              omitted,  the matching line is included in the output.  See also
393              options -U, -W and -X.
394
395       --hidden, -.
396              Search hidden files and directories.
397
398       --hyperlink[=[PREFIX][+]]
399              Hyperlinks are enabled for file names when colors  are  enabled.
400              Same as --colors=hl.  When PREFIX is specified, replaces file://
401              with PREFIX:// in the hyperlink.  A `+' includes the line number
402              in  the  hyperlink  and  when option -k is specified, the column
403              number.
404
405       -I, --ignore-binary
406              Ignore matches in binary files.  This option  is  equivalent  to
407              the --binary-files=without-match option.
408
409       -i, --ignore-case
410              Perform  case  insensitive  matching.  By default, ugrep is case
411              sensitive.  By default, this option  applies  to  ASCII  letters
412              only.  Use options -P and -i for Unicode case insensitive match‐
413              ing.
414
415       --ignore-files[=FILE]
416              Ignore files and directories matching the  globs  in  each  FILE
417              that  is encountered in recursive searches.  The default FILE is
418              `.gitignore'.  Matching files and directories located in the di‐
419              rectory  of  a  FILE's location and in directories below are ig‐
420              nored by temporarily extending the --exclude  and  --exclude-dir
421              globs,  as if --exclude-from=FILE is locally enforced.  Globbing
422              syntax is the same as the --exclude-from=FILE gitignore  syntax;
423              directories  are  excluded  when the glob ends in a `/', same as
424              git.  Files and directories explicitly specified as command line
425              arguments  are  never ignored.  This option may be repeated with
426              additional files.
427
428       --include=GLOB
429              Search only files whose name matches GLOB using wildcard  match‐
430              ing, same as -g GLOB.  GLOB can use **, *, ?, and [...] as wild‐
431              cards and \ to quote a wildcard or  backslash  character  liter‐
432              ally.   When  GLOB  contains  a `/', full pathnames are matched.
433              Otherwise basenames are matched.  When GLOB ends with a `/', di‐
434              rectories are included as if --include-dir is specified.  Other‐
435              wise files are included.  Note that --exclude patterns take pri‐
436              ority over --include patterns.  GLOB should be quoted to prevent
437              shell globbing.  This option may be repeated.
438
439       --include-dir=GLOB
440              Only directories whose name matches GLOB are included in  recur‐
441              sive  searches,  same  as  -g GLOB/.  GLOB can use **, *, ?, and
442              [...] as wildcards and \ to quote a wildcard or backslash  char‐
443              acter  literally.   When GLOB contains a `/', full pathnames are
444              matched.  Otherwise basenames  are  matched.   Note  that  --ex‐
445              clude-dir  patterns  take  priority over --include-dir patterns.
446              GLOB should be quoted to prevent shell  globbing.   This  option
447              may be repeated.
448
449       --include-from=FILE
450              Read  the  globs from FILE and search only files and directories
451              whose name matches one or more globs.  A glob can use **, *,  ?,
452              and  [...]  as  wildcards and \ to quote a wildcard or backslash
453              character literally.  When a glob contains a `/', full pathnames
454              are matched.  Otherwise basenames are matched.  When a glob ends
455              with a `/', directories are  included  as  if  --include-dir  is
456              specified.   Otherwise files are included.  A glob starting with
457              a `!' overrides  previously-specified  inclusions  by  excluding
458              matching  files.   Lines  starting with a `#' and empty lines in
459              FILE are ignored.  When FILE is a `-', standard input  is  read.
460              This option may be repeated.
461
462       --include-fs=MOUNTS
463              Only  file systems specified by MOUNTS are included in recursive
464              searches.  MOUNTS is a comma-separated list of mount  points  or
465              pathnames  of  directories  on file systems.  --include-fs=. re‐
466              stricts recursive searches to the file system of the working di‐
467              rectory  only.  Note that --exclude-fs mounts take priority over
468              --include-fs mounts.  This option may be repeated.
469
470       -J NUM, --jobs=NUM
471              Specifies the number of threads spawned to search files.  By de‐
472              fault  an  optimum  number of threads is spawned to search files
473              simultaneously.  -J1 disables threading: files are  searched  in
474              the same order as specified.
475
476       -j, --smart-case
477              Perform  case insensitive matching like option -i, unless a pat‐
478              tern is specified with a literal ASCII upper case letter.
479
480       --json Output file matches in JSON.  If -H, -n, -k, or -b is specified,
481              additional values are output.  See also options --format and -u.
482
483       -K [MIN,][MAX], --range=[MIN,][MAX], --min-line=MIN, --max-line=MAX
484              Start searching at line MIN, stop at line MAX when specified.
485
486       -k, --column-number
487              The  column number of a matched pattern is displayed in front of
488              the respective matched line, starting at column 1.  Tabs are ex‐
489              panded when columns are counted, see also option --tabs.
490
491       -L, --files-without-match
492              Only  the names of files not containing selected lines are writ‐
493              ten to standard output.  Pathnames  are  listed  once  per  file
494              searched.   If  the  standard  input  is  searched,  the  string
495              ``(standard input)'' is written.  If --tree is  specified,  out‐
496              puts directories in a tree-like format.
497
498       -l, --files-with-matches
499              Only the names of files containing selected lines are written to
500              standard output.  ugrep will only search a file  until  a  match
501              has  been  found,  making  searches  potentially less expensive.
502              Pathnames are listed once per file searched.   If  the  standard
503              input  is  searched, the string ``(standard input)'' is written.
504              If --tree is specified, outputs directories in a tree-like  for‐
505              mat.
506
507       --label=LABEL
508              Displays  the LABEL value when input is read from standard input
509              where a file name would normally be printed in the output.   As‐
510              sociates a filename extension with standard input when LABEL has
511              a suffix.  The default value is `(standard input)'.
512
513       --line-buffered
514              Force output to be line buffered instead of block buffered.
515
516       --lines
517              Apply Boolean queries to match lines, the opposite  of  --files.
518              This is the default Boolean query mode to match specific lines.
519
520       -M MAGIC, --file-magic=MAGIC
521              Only  files  matching  the signature pattern MAGIC are searched.
522              The signature "magic bytes" at the start of a file are  compared
523              to  the  MAGIC  regex  pattern.  When matching, the file will be
524              searched.  When MAGIC is preceded by a `!' or a `^', skip  files
525              with matching MAGIC signatures.  This option may be repeated and
526              may be combined with options -O and -t  to  expand  the  search.
527              Every  file  on  the search path is read, making searches poten‐
528              tially more expensive.
529
530       -m [MIN,][MAX], --min-count=MIN, --max-count=MAX
531              Require MIN matches, stop  after  MAX  matches  when  specified.
532              Output  MIN  to MAX matches.  For example, -m1 outputs the first
533              match and -cm1, (with a comma)  counts  non-zero  matches.   See
534              also option -K.
535
536       --match
537              Match all input.  Same as specifying an empty pattern to search.
538
539       --max-files=NUM
540              Restrict  the  number of files matched to NUM.  Note that --sort
541              or -J1 may be  specified  to  produce  replicable  results.   If
542              --sort is specified, the number of threads spawned is limited to
543              NUM.
544
545       --mmap[=MAX]
546              Use memory maps to search files.  By default,  memory  maps  are
547              used  under certain conditions to improve performance.  When MAX
548              is specified, use up to MAX mmap memory per thread.
549
550       -N PATTERN, --neg-regexp=PATTERN
551              Specify a negative PATTERN used during the search of the  input:
552              an  input line is selected only if it matches the specified pat‐
553              terns unless it  matches  the  negative  PATTERN.   Same  as  -e
554              (?^PATTERN).   Negative  pattern matches are essentially removed
555              before any other patterns are matched.  Note  that  longer  pat‐
556              terns take precedence over shorter patterns.  This option may be
557              repeated.
558
559       -n, --line-number
560              Each output line is preceded by its relative line number in  the
561              file,  starting at line 1.  The line number counter is reset for
562              each file processed.
563
564       --no-group-separator
565              Removes the group separator line from the output for context op‐
566              tions -A, -B and -C.
567
568       --not [-e] PATTERN
569              Specifies  that  PATTERN should not match.  Note that -e A --not
570              -e B matches lines with `A' or lines without a  `B'.   To  match
571              lines  with  `A'  that  have no `B', specify -e A --andnot -e B.
572              Option --stats displays the search patterns applied.   See  also
573              options --and, --andnot, --bool, --files and --lines.
574
575       -O EXTENSIONS, --file-extension=EXTENSIONS
576              Search  only files whose filename extensions match the specified
577              comma-separated list of EXTENSIONS,  same  as  --include='*.ext'
578              for  each  `ext'  in EXTENSIONS.  When an `ext' is preceded by a
579              `!' or a `^',  skip  files  whose  filename  extensions  matches
580              `ext',  same  as --exclude='*.ext'.  This option may be repeated
581              and may be combined with options -g, -M and -t to expand the re‐
582              cursive search.
583
584       -o, --only-matching
585              Output  only  the  matching  part  of  lines.  Output additional
586              matches on the same line with `+' as the field separator.   When
587              multiple  lines  match a pattern, output the matching lines with
588              `|' as the field separator.  If -A, -B or -C is specified,  fits
589              the  match and its context on a line within the specified number
590              of columns.
591
592       --only-line-number
593              The line number of the matching line in the file is output with‐
594              out  displaying the match.  The line number counter is reset for
595              each file processed.
596
597       --files
598              Apply Boolean queries to match files, the opposite  of  --lines.
599              A  file  matches  if all Boolean conditions are satisfied by the
600              lines matched in the file.  For example, --files -e A --and -e B
601              -e  C  --andnot  -e D matches a file if some lines match `A' and
602              some lines match (`B' or `C') and no line in  the  file  matches
603              `D'.   May  also be specified as --files --bool 'A B|C -D'.  Op‐
604              tion -v cannot be specified  with  --files.   See  also  options
605              --and, --andnot, --not, --bool and --lines.
606
607       -P, --perl-regexp
608              Interpret  PATTERN  as  a  Perl  regular expression using PCRE2.
609              Note that Perl pattern matching differs from  the  default  grep
610              POSIX pattern matching.
611
612       -p, --no-dereference
613              If  -R  or -r is specified, no symbolic links are followed, even
614              when they are specified on the command line.
615
616       --pager[=COMMAND]
617              When output is sent  to  the  terminal,  uses  COMMAND  to  page
618              through  the output.  The default COMMAND is `less -R'.  Enables
619              --heading and --line-buffered.
620
621       --pretty
622              When output is sent to a terminal, enables  --color,  --heading,
623              -n, --sort, --tree and -T when not explicitly disabled.
624
625       -Q[DELAY], --query[=DELAY]
626              Query  mode:  user  interface  to  perform interactive searches.
627              This mode requires an ANSI capable terminal.  An optional  DELAY
628              argument  may  be  specified  to reduce or increase the response
629              time to execute searches after the last key press, in increments
630              of  100ms,  where  the default is 5 (0.5s delay).  No whitespace
631              may be given between -Q and its argument  DELAY.   Initial  pat‐
632              terns  may be specified with -e PATTERN, i.e. a PATTERN argument
633              requires option -e.  Press F1 or CTRL-Z to view the help screen.
634              Press  F2 or CTRL-Y to invoke a command to view or edit the file
635              shown at the top of the screen.  The command  can  be  specified
636              with option --view, or defaults to environment variable PAGER if
637              defined, or EDITOR.  Press Tab and Shift-Tab to navigate  direc‐
638              tories  and  to  select a file to search.  Press Enter to select
639              lines to output.  Press ALT-l for option -l to list files, ALT-n
640              for  -n,  etc.   Non-option  commands  include ALT-] to increase
641              fuzziness and ALT-} to  increase  context.   Enables  --heading.
642              See also options --confirm and --view.
643
644       -q, --quiet, --silent
645              Quiet mode: suppress all output.  ugrep will only search until a
646              match has been found.
647
648       -R, --dereference-recursive
649              Recursively read all files under  each  directory.   Follow  all
650              symbolic links, unlike -r.  See also option --sort.
651
652       -r, --recursive
653              Recursively  read all files under each directory, following sym‐
654              bolic links only if they are  specified  on  the  command  line.
655              Note that when no FILE arguments are specified and input is read
656              from a terminal, recursive searches are performed as  if  -r  is
657              specified.  See also option --sort.
658
659       --replace=FORMAT
660              Replace  matching patterns in the output by the specified FORMAT
661              with `%' fields.  If -P is specified, FORMAT may include `%1' to
662              `%9', `%[NUM]#' and `%[NAME]#' to output group captures.  A `%%'
663              outputs `%' and `%~' outputs a newline.   See  option  --format,
664              `ugrep  --help  format'  and  `man ugrep' section FORMAT for de‐
665              tails.
666
667       -S, --dereference
668              If -r is specified, all symbolic links are  followed,  like  -R.
669              The default is not to follow symbolic links to directories.
670
671       -s, --no-messages
672              Silent  mode: nonexistent and unreadable files are ignored, i.e.
673              their error messages and warnings are suppressed.
674
675       --save-config[=FILE]
676              Save configuration FILE.  By default `.ugrep' is saved.  If FILE
677              is a `-', write the configuration to standard output.
678
679       --separator[=SEP]
680              Use  SEP as field separator between file name, line number, col‐
681              umn number, byte offset and the matched line.  The default is  a
682              colon  (`:'),  a  plus  (`+') for additional matches on the same
683              line, and a bar (`|') for multi-line pattern matches.
684
685       --sort[=KEY]
686              Displays matching files in the order specified by KEY in  recur‐
687              sive  searches.   Normally  the ug command sorts by name whereas
688              the ugrep batch command displays matches in no particular  order
689              to  improve  performance.  The sort KEY can be `name' to sort by
690              pathname (default), `best' to sort by best match with option  -Z
691              (sort by best match requires two passes over files, which is ex‐
692              pensive), `size' to sort by file size, `used' to  sort  by  last
693              access  time,  `changed'  to  sort by last modification time and
694              `created' to sort by creation time.  Sorting  is  reversed  with
695              `rname',  `rbest',  `rsize', `rused', `rchanged', or `rcreated'.
696              Archive contents are not sorted.  Subdirectories are sorted  and
697              displayed  after matching files.  FILE arguments are searched in
698              the same order as specified.
699
700       --stats
701              Output  statistics  on  the  number  of  files  and  directories
702              searched and the inclusion and exclusion constraints applied.
703
704       -T, --initial-tab
705              Add  a  tab space to separate the file name, line number, column
706              number and byte offset with the matched line.
707
708       -t TYPES, --file-type=TYPES
709              Search only files associated with TYPES, a comma-separated  list
710              of  file types.  Each file type corresponds to a set of filename
711              extensions passed to option -O and filenames  passed  to  option
712              -g.   For  capitalized file types, the search is expanded to in‐
713              clude files with matching file  signature  magic  bytes,  as  if
714              passed to option -M.  When a type is preceded by a `!' or a `^',
715              excludes files of the specified type.  This option  may  be  re‐
716              peated.  The possible file types can be (where -tlist displays a
717              detailed list): `actionscript',  `ada',  `asm',  `asp',  `aspx',
718              `autoconf', `automake', `awk', `Awk', `basic', `batch', `bison',
719              `c', `c++', `clojure', `cpp', `csharp',  `css',  `csv',  `dart',
720              `Dart', `delphi', `elisp', `elixir', `erlang', `fortran', `gif',
721              `Gif', `go', `groovy', `gsp', `haskell', `html', `jade', `java',
722              `jpeg',  `Jpeg', `js', `json', `jsp', `julia', `kotlin', `less',
723              `lex',  `lisp',  `lua',  `m4',  `make',  `markdown',   `matlab',
724              `node',  `Node',  `objc', `objc++', `ocaml', `parrot', `pascal',
725              `pdf', `Pdf', `perl', `Perl', `php', `Php', `png', `Png',  `pro‐
726              log',  `python',  `Python',  `r',  `rpm',  `Rpm',  `rst', `rtf',
727              `Rtf',  `ruby',  `Ruby',  `rust',  `scala',  `scheme',  `shell',
728              `Shell',  `smalltalk',  `sql',  `svg',  `swift',  `tcl',  `tex',
729              `text', `tiff', `Tiff', `tt', `typescript',  `verilog',  `vhdl',
730              `vim', `xml', `Xml', `yacc', `yaml'.
731
732       --tabs[=NUM]
733              Set the tab size to NUM to expand tabs for option -k.  The value
734              of NUM may be 1, 2, 4, or 8.  The default tab size is 8.
735
736       --tag[=TAG[,END]]
737              Disables colors to mark up matches with TAG.  END marks the  end
738              of a match if specified, otherwise TAG.  The default is `___'.
739
740       --tree, -^
741              Output  directories  with  matching  files in a tree-like format
742              when options -c, -l or -L are used.  This option is  enabled  by
743              --pretty when the output is sent to a terminal.
744
745       -U, --binary
746              Disables Unicode matching for binary file matching, forcing PAT‐
747              TERN to match bytes, not Unicode characters.   For  example,  -U
748              '\xa3'  matches  byte A3 (hex) instead of the Unicode code point
749              U+00A3 represented by the UTF-8 sequence C2 A3.  See also option
750              --dotall.
751
752       -u, --ungroup
753              Do  not group multiple pattern matches on the same matched line.
754              Output the matched line again for each additional pattern match,
755              using `+' as a separator.
756
757       -V, --version
758              Display version with linked libraries and exit.
759
760       -v, --invert-match
761              Selected  lines are those not matching any of the specified pat‐
762              terns.
763
764       --view[=COMMAND]
765              Use COMMAND to view/edit a file  in  query  mode  when  pressing
766              CTRL-Y.
767
768       -W, --with-hex
769              Output  binary  matches  in  hexadecimal,  leaving  text matches
770              alone.  This option is equivalent to the --binary-files=with-hex
771              option  with  --hexdump=2C.   To omit the matching line from the
772              hex output, combine option --hexdump with option -W.   See  also
773              option -U.
774
775       -w, --word-regexp
776              The  PATTERN  is  searched for as a word, such that the matching
777              text is preceded by a non-word character and is  followed  by  a
778              non-word character.  Word characters are letters, digits and the
779              underscore.  With option -P, word characters  are  Unicode  let‐
780              ters, digits and underscore.  This option has no effect if -x is
781              also specified.  If a PATTERN is specified, or -e PATTERN or  -N
782              PATTERN,  then  this option has no effect on -f FILE patterns to
783              allow -f FILE patterns to narrow or widen the scope of the  PAT‐
784              TERN search.
785
786       --width[=NUM]
787              Truncate  the  output  to  NUM visible characters per line.  The
788              width of the terminal window is used if NUM  is  not  specified.
789              Note  that  double  wide  characters in the output may result in
790              wider lines.
791
792       -X, --hex
793              Output matches in hexadecimal.  This option is equivalent to the
794              --binary-files=hex option with --hexdump=2C.  To omit the match‐
795              ing line from the hex output, use option  --hexdump  instead  of
796              -X.  See also option -U.
797
798       -x, --line-regexp
799              Select  only those matches that exactly match the whole line, as
800              if the patterns are surrounded by ^ and  $.   If  a  PATTERN  is
801              specified,  or -e PATTERN or -N PATTERN, then this option has no
802              effect on -f FILE patterns to allow -f FILE patterns  to  narrow
803              or widen the scope of the PATTERN search.
804
805       --xml  Output  file matches in XML.  If -H, -n, -k, or -b is specified,
806              additional values are output.  See also options --format and -u.
807
808       -Y, --empty
809              Permits empty matches.  By default, empty matches are  disabled,
810              unless  a  pattern  begins with `^' or ends with `$'.  With this
811              option, empty-matching patterns such as x? and x*, match all in‐
812              put, not only lines containing the character `x'.
813
814       -y, --any-line, --passthru
815              Any line is output (passthru).  Non-matching lines are output as
816              context with a `-' separator.  See also options -A, -B and -C.
817
818       -Z[best][+-~][MAX], --fuzzy=[best][+-~][MAX]
819              Fuzzy mode: report approximate pattern matches  within  MAX  er‐
820              rors.   The default is -Z1: one deletion, insertion or substitu‐
821              tion is allowed.  If `+`, `-' and/or `~' is specified, then  `+'
822              allows insertions, `-' allows deletions and `~' allows substitu‐
823              tions.  For example, -Z+~3 allows up to three insertions or sub‐
824              stitutions, but no deletions.  If `best' is specified, then only
825              the best matching lines are output  with  the  lowest  cost  per
826              file.   Option -Zbest requires two passes over a file and cannot
827              be  used  with  standard  input  or  Boolean  queries.    Option
828              --sort=best  orders  matching  files  by  best match.  The first
829              character of an approximate match always matches a character  at
830              the  beginning of the pattern.  To fuzzy match the first charac‐
831              ter, replace it with a `.' or `.?'.   Option  -U  applies  fuzzy
832              matching  to ASCII and bytes instead of Unicode text.  No white‐
833              space may be given between -Z and its argument.
834
835       -z, --decompress
836              Decompress files to search, when compressed.   Archives  (.cpio,
837              .pax,  .tar  and .zip) and compressed archives (e.g. .taz, .tgz,
838              .tpz, .tbz, .tbz2, .tb2, .tz2, .tlz, .txz, .tzst)  are  searched
839              and  matching  pathnames  of  files  in  archives  are output in
840              braces.  If -g, -O, -M,  or  -t  is  specified,  searches  files
841              stored  in  archives whose filenames match globs, match filename
842              extensions, match file signature  magic  bytes,  or  match  file
843              types, respectively.  Supported compression formats: gzip (.gz),
844              compress (.Z), zip, bzip2 (requires suffix  .bz,  .bz2,  .bzip2,
845              .tbz,  .tbz2,  .tb2,  .tz2), lzma and xz (requires suffix .lzma,
846              .tlz, .xz, .txz), lz4 (requires  suffix  .lz4),  zstd  (requires
847              suffix .zst, .zstd, .tzst).
848
849       --zmax=NUM
850              When  used  with option -z (--decompress), searches the contents
851              of compressed files and archives stored within archives by up to
852              NUM  recursive  expansions.   The  default --zmax=1 only permits
853              searching uncompressed files stored in cpio, pax,  tar  and  zip
854              archives;  compressed  files and archives are detected as binary
855              files and are effectively ignored.  Specify --zmax=2  to  search
856              compressed  files  and archives stored in cpio, pax, tar and zip
857              archives.  NUM may range from 1 to 99 for up to 99 decompression
858              and  de-archiving  steps.   Increasing  NUM values gradually de‐
859              grades performance.
860
861       -0, --null
862              Output a zero-byte (NUL) after the file name.  This  option  can
863              be  used  with commands such as `find -print0' and `xargs -0' to
864              process arbitrary file names.
865
866       A `--' signals the end of options; the rest of the parameters are  FILE
867       arguments, allowing filenames to begin with a `-' character.
868
869       Long options may start with `--no-' to disable, when applicable.
870
871       The  regular expression pattern syntax is an extended form of the POSIX
872       ERE syntax.  For an overview of the syntax see README.md or visit:
873
874              https://github.com/Genivia/ugrep
875
876       Note that `.' matches any non-newline character.  Pattern `\n'  matches
877       a  newline character.  Multiple lines may be matched with patterns that
878       match one or more newline characters.
879

EXIT STATUS

881       The ugrep utility exits with one of the following values:
882
883       0      One or more lines were selected.
884
885       1      No lines were selected.
886
887       >1     An error occurred.
888
889       If -q or --quiet or --silent is used and a line is selected,  the  exit
890       status is 0 even if an error occurred.
891

CONFIGURATION

893       The  ug command is intended for context-dependent interactive searching
894       and is equivalent to the ugrep --config command  to  load  the  default
895       configuration file `.ugrep' when present in the working directory or in
896       the home directory.
897
898       A configuration file contains `NAME=VALUE' pairs per line, where `NAME`
899       is  the  name  of a long option (without `--') and `=VALUE' is an argu‐
900       ment, which is optional and may be omitted  depending  on  the  option.
901       Empty lines and lines starting with a `#' are ignored.
902
903       The  --config=FILE  option  and  its  abbreviated form ---FILE load the
904       specified configuration file located in the working directory or,  when
905       not  found,  located  in the home directory.  An error is produced when
906       FILE is not found or cannot be read.
907
908       Command line options are parsed in the following order: the  configura‐
909       tion  file is loaded first, followed by the remaining options and argu‐
910       ments on the command line.
911
912       The --save-config option saves a `.ugrep'  configuration  file  to  the
913       working  directory  with  a subset of the current options.  The --save-
914       config=FILE option saves the configuration to FILE.  The  configuration
915       is written to standard output when FILE is a `-'.
916

GLOBBING

918       Globbing  is  used  by options -g, --include, --include-dir, --include-
919       from, --exclude, --exclude-dir, --exclude-from  and  --ignore-files  to
920       match  pathnames  and  basenames in recursive searches.  Glob arguments
921       for these options should be quoted to prevent shell globbing.
922
923       Globbing supports  gitignore  syntax  and  the  corresponding  matching
924       rules,  except  that a glob normally matches files but not directories.
925       If a glob ends in a path separator `/', then it matches directories but
926       not  files,  as if --include-dir or --exclude-dir is specified.  When a
927       glob contains a path separator `/', the full pathname is matched.  Oth‐
928       erwise  the  basename  of a file or directory is matched.  For example,
929       *.h matches foo.h and bar/foo.h.  bar/*.h  matches  bar/foo.h  but  not
930       foo.h  and not bar/bar/foo.h.  Use a leading `/' to force /*.h to match
931       foo.h but not bar/foo.h.
932
933       When a glob starts with a `^' or a `!' as  in  -g^GLOB,  the  match  is
934       negated.  Likewise, a `!' (but not a `^') may be used with globs in the
935       files specified --include-from, --exclude-from, and  --ignore-files  to
936       negate  the  glob  match.  Empty lines or lines starting with a `#' are
937       ignored.
938
939       Glob Syntax and Conventions
940
941       *      Matches anything except /.
942
943       ?      Matches any one character except /.
944
945       [abc-e]
946              Matches one character a,b,c,d,e.
947
948       [^abc-e]
949              Matches one character not a,b,c,d,e,/.
950
951       [!abc-e]
952              Matches one character not a,b,c,d,e,/.
953
954       /      When used at the start of a glob, matches if pathname has no  /.
955              When used at the end of a glob, matches directories only.
956
957       **/    Matches zero or more directories.
958
959       /**    When used at the end of a glob, matches everything after the /.
960
961       \?     Matches  a  ?  or  any other character specified after the back‐
962              slash.
963
964       Glob Matching Examples
965
966       *      Matches a, b, x/a, x/y/b
967
968       a      Matches a, x/a, x/y/a,       but not b, x/b, a/a/b
969
970       /*     Matches a, b,                but not x/a, x/b, x/y/a
971
972       /a     Matches a,                   but not x/a, x/y/a
973
974       a?b    Matches axb, ayb,            but not a, b, ab, a/b
975
976       a[xy]b Matches axb, ayb             but not a, b, azb
977
978       a[a-z]b
979              Matches aab, abb, acb, azb,  but not a, b, a3b, aAb, aZb
980
981       a[^xy]b
982              Matches aab, abb, acb, azb,  but not a, b, axb, ayb
983
984       a[^a-z]b
985              Matches a3b, aAb, aZb        but not a, b, aab, abb, acb, azb
986
987       a/*/b  Matches a/x/b, a/y/b,        but not a/b, a/x/y/b
988
989       **/a   Matches a, x/a, x/y/a,       but not b, x/b.
990
991       a/**/b Matches a/b, a/x/b, a/x/y/b, but not x/a/b, a/b/x
992
993       a/**   Matches a/x, a/y, a/x/y,     but not a, b/x
994
995       a\?b   Matches a?b,                 but not a, b, ab, axb, a/b
996
997       Note that exclude glob patterns take priority over  include  glob  pat‐
998       terns  when  specified with options -g, --exclude, --exclude-dir, --in‐
999       clude and include-dir.
1000
1001       Glob patterns specified with prefix `!' in any of the files  associated
1002       with  --include-from,  --exclude-from  and --ignore-files will negate a
1003       previous glob match.  That is, any matching file or directory  excluded
1004       by a previous glob pattern specified in the files associated with --ex‐
1005       clude-from or --ignore-file will become included again.  Likewise,  any
1006       matching  file  or directory included by a previous glob pattern speci‐
1007       fied in the files associated with --include-from will  become  excluded
1008       again.
1009

ENVIRONMENT

1011       GREP_PATH
1012              May  be  used to specify a file path to pattern files.  The file
1013              path is used by option -f to open a pattern file, when the  pat‐
1014              tern file does not exist.
1015
1016       GREP_COLOR
1017              May  be used to specify ANSI SGR parameters to highlight matches
1018              when option --color is used, e.g. 1;35;40 shows pattern  matches
1019              in bold magenta text on a black background.  Deprecated in favor
1020              of GREP_COLORS, but still supported.
1021
1022       GREP_COLORS
1023              May be used to specify ANSI SGR parameters to highlight  matches
1024              and  other attributes when option --color is used.  Its value is
1025              a colon-separated list of ANSI SGR parameters that  defaults  to
1026              cx=33:mt=1;31:fn=1;35:ln=1;32:cn=1;32:bn=1;32:se=36.   The  mt=,
1027              ms=, and mc= capabilities  of  GREP_COLORS  take  priority  over
1028              GREP_COLOR.  Option --colors takes priority over GREP_COLORS.
1029

GREP_COLORS

1031       Colors  are  specified as string of colon-separated ANSI SGR parameters
1032       of the form `what=substring', where `substring'  is  a  semicolon-sepa‐
1033       rated  list  of  ANSI SGR codes or `k' (black), `r' (red), `g' (green),
1034       `y' (yellow), `b' (blue), `m' (magenta), `c' (cyan), `w' (white).   Up‐
1035       per  case  specifies  background  colors.   A  `+' qualifies a color as
1036       bright.  A foreground and a background color may be combined  with  one
1037       or more font properties `n' (normal), `f' (faint), `h' (highlight), `i'
1038       (invert), `u' (underline).  Substrings may be specified for:
1039
1040       sl=    SGR substring for selected lines.
1041
1042       cx=    SGR substring for context lines.
1043
1044       rv     Swaps the sl= and cx= capabilities when -v is specified.
1045
1046       mt=    SGR substring for matching text in any matching line.
1047
1048       ms=    SGR substring for matching text in a selected  line.   The  sub‐
1049              string mt= by default.
1050
1051       mc=    SGR  substring  for  matching  text in a context line.  The sub‐
1052              string mt= by default.
1053
1054       fn=    SGR substring for filenames.
1055
1056       ln=    SGR substring for line numbers.
1057
1058       cn=    SGR substring for column numbers.
1059
1060       bn=    SGR substring for byte offsets.
1061
1062       se=    SGR substring for separators.
1063
1064       rv     a Boolean parameter, switches sl= and cx= with option -v.
1065
1066       hl     a Boolean parameter, enables filename hyperlinks (\33]8;;link).
1067
1068       ne     a Boolean parameter, disables ``erase in line'' \33[K.
1069

FORMAT

1071       Option --format=FORMAT specifies an output  format  for  file  matches.
1072       Fields may be used in FORMAT, which expand into the following values:
1073
1074       %[ARG]F
1075              if option -H is used: ARG, the file pathname and separator.
1076
1077       %f     the file pathname.
1078
1079       %a     the file basename without directory path.
1080
1081       %p     the directory path to the file.
1082
1083       %z     the file pathname in a (compressed) archive.
1084
1085       %[ARG]H
1086              if option -H is used: ARG, the quoted pathname and separator, \"
1087              and \\ replace " and \.
1088
1089       %h     the quoted file pathname, \" and \\ replace " and \.
1090
1091       %[ARG]N
1092              if option -n is used: ARG, the line number and separator.
1093
1094       %n     the line number of the match.
1095
1096       %[ARG]K
1097              if option -k is used: ARG, the column number and separator.
1098
1099       %k     the column number of the match.
1100
1101       %[ARG]B
1102              if option -b is used: ARG, the byte offset and separator.
1103
1104       %b     the byte offset of the match.
1105
1106       %[ARG]T
1107              if option -T is used: ARG and a tab character.
1108
1109       %t     a tab character.
1110
1111       %[SEP]$
1112              set field separator to SEP for the rest of the format fields.
1113
1114       %[ARG]<
1115              if the first match: ARG.
1116
1117       %[ARG]>
1118              if not the first match: ARG.
1119
1120       %,     if not the first match: a comma, same as %[,]>.
1121
1122       %:     if not the first match: a colon, same as %[:]>.
1123
1124       %;     if not the first match: a semicolon, same as %[;]>.
1125
1126       %|     if not the first match: a vertical bar, same as %[|]>.
1127
1128       %[ARG]S
1129              if not the first match: ARG and separator, see also %[SEP]$.
1130
1131       %s     the separator, see also %[ARG]S and %[SEP]$.
1132
1133       %~     a newline character.
1134
1135       %M     the number of matching lines
1136
1137       %m     the number of matches
1138
1139       %O     the matching line is output as a raw string of bytes.
1140
1141       %o     the match is output as a raw string of bytes.
1142
1143       %Q     the matching line as a quoted string, \" and \\ replace " and \.
1144
1145       %q     the match as a quoted string, \" and \\ replace " and \.
1146
1147       %C     the matching line formatted as a quoted C/C++ string.
1148
1149       %c     the match formatted as a quoted C/C++ string.
1150
1151       %J     the matching line formatted as a quoted JSON string.
1152
1153       %j     the match formatted as a quoted JSON string.
1154
1155       %V     the matching line formatted as a quoted CSV string.
1156
1157       %v     the match formatted as a quoted CSV string.
1158
1159       %X     the matching line formatted as XML character data.
1160
1161       %x     the match formatted as XML character data.
1162
1163       %w     the width of the match, counting wide characters.
1164
1165       %d     the size of the match, counting bytes.
1166
1167       %e     the ending byte offset of the match.
1168
1169       %Z     the edit distance cost of an approximate match with option -Z
1170
1171       %u     select unique lines only, unless option -u is used.
1172
1173       %1     the first regex group capture of the match,  and  so  on  up  to
1174              group %9, same as %[1]#; requires option -P.
1175
1176       %[NUM]#
1177              the regex group capture NUM; requires option -P.
1178
1179       %[NUM]b
1180              the  byte  offset  of the group capture NUM; requires option -P.
1181              Use e for the ending byte offset and d for the byte length.
1182
1183       %[NUM1|NUM2|...]#
1184              the first group capture NUM that matched; requires option -P.
1185
1186       %[NUM1|NUM2|...]b
1187              the byte offset of the first group capture NUM that matched; re‐
1188              quires  option  -P.   Use e for the ending byte offset and d for
1189              the byte length.
1190
1191       %[NAME]#
1192              the NAMEd group capture; requires option -P and  capturing  pat‐
1193              tern `(?<NAME>PATTERN)', see also %G.
1194
1195       %[NAME]b
1196              the  byte  offset of the NAMEd group capture; requires option -P
1197              and capturing pattern `(?<NAME>PATTERN)'.  Use e for the  ending
1198              byte offset and d for the byte length.
1199
1200       %[NAME1|NAME2|...]#
1201              the  first  NAMEd group capture that matched; requires option -P
1202              and capturing pattern `(?<NAME>PATTERN)', see also %G.
1203
1204       %[NAME1|NAME2|...]b
1205              the byte offset of the first NAMEd group capture  that  matched;
1206              requires  option  -P  and  capturing pattern `(?<NAME>PATTERN)'.
1207              Use e for the ending byte offset and d for the byte length.
1208
1209       %G     list of group capture indices/names that matched;  requires  op‐
1210              tion -P.
1211
1212       %[TEXT1|TEXT2|...]G
1213              list  of TEXT indexed by group capture indices that matched; re‐
1214              quires option -P.
1215
1216       %g     the group capture index/name matched or 1; requires option -P.
1217
1218       %[TEXT1|TEXT2|...]g
1219              the first TEXT indexed by the first  group  capture  index  that
1220              matched; requires option -P.
1221
1222       %%     the percentage sign.
1223
1224       Formatted output is written without a terminating newline, unless %~ or
1225       `\n' is explicitly specified in the format string.
1226
1227       The [ARG] part of a  field  is  optional  and  may  be  omitted.   When
1228       present,  the argument must be placed in [] brackets, for example %[,]F
1229       to output a comma, the pathname, and a separator.
1230
1231       %[SEP]$ and %u are switches and do not send anything to the output.
1232
1233       The separator used by the %F, %H, %N, %K, %B, %S and %G fields  may  be
1234       changed by preceding the field by %[SEP]$.  When [SEP] is not provided,
1235       this reverts the separator to the default separator  or  the  separator
1236       specified with --separator.
1237
1238       Formatted output is written for each matching pattern, which means that
1239       a line may be output multiple times when patterns match more than  once
1240       on  the  same  line.   If  field  %u  is specified anywhere in a format
1241       string, matching lines are output only once, unless  option  -u,  --un‐
1242       group  is  specified  or  when  more than one line of input matched the
1243       search pattern.
1244
1245       Additional formatting options:
1246
1247       --format-begin=FORMAT
1248              the FORMAT when beginning the search.
1249
1250       --format-open=FORMAT
1251              the FORMAT when opening a file and a match was found.
1252
1253       --format-close=FORMAT
1254              the FORMAT when closing a file and a match was found.
1255
1256       --format-end=FORMAT
1257              the FORMAT when ending the search.
1258
1259       The context options -A,  -B,  -C,  -y,  and  display  options  --break,
1260       --heading, --color, -T, and --null have no effect on formatted output.
1261

EXAMPLES

1263       Display lines containing the word `patricia' in `myfile.txt':
1264
1265              $ ugrep -w patricia myfile.txt
1266
1267       Display lines containing the word `patricia', ignoring case:
1268
1269              $ ugrep -wi patricia myfile.txt
1270
1271       Display lines approximately matching the word `patricia', ignoring case
1272       and allowing up to 2 spelling errors using fuzzy search:
1273
1274              $ ugrep -Z2 -wi patricia myfile.txt
1275
1276       Count the number of lines containing `patricia', ignoring case:
1277
1278              $ ugrep -cwi patricia myfile.txt
1279
1280       Count the number of words `patricia', ignoring case:
1281
1282              $ ugrep -cowi patricia myfile.txt
1283
1284       List lines with `amount' and a decimal, ignoring case (space is AND):
1285
1286              $ ugrep -i --bool 'amount +(.+)?' myfile.txt
1287
1288       Alternative query:
1289
1290              $ ugrep -wi -e amount --and '+(.+)?' myfile.txt
1291
1292       List all Unicode words in a file:
1293
1294              $ ugrep -o '\w+' myfile.txt
1295
1296       List all ASCII words in a file:
1297
1298              $ ugrep -o '[[:word:]]+' myfile.txt
1299
1300       List the laughing face emojis (Unicode code points U+1F600 to U+1F60F):
1301
1302              $ ugrep -o '[\x{1F600}-\x{1F60F}]' myfile.txt
1303
1304       Check if a file contains any non-ASCII (i.e. Unicode) characters:
1305
1306              $ ugrep -q '[^[:ascii:]]' myfile.txt && echo "contains Unicode"
1307
1308       Display the line and column number of `FIXME' in C++ files using recur‐
1309       sive search, with one line of context before and after a matched line:
1310
1311              $ ugrep -C1 -R -n -k -tc++ FIXME
1312
1313       Display  the line and column number of `FIXME' in long Javascript files
1314       using recursive search, showing only matches with up to  10  characters
1315       of context before and after:
1316
1317              $ ugrep -o -C20 -R -n -k -tjs FIXME
1318
1319       List the C/C++ comments in a file with line numbers:
1320
1321              $ ugrep -n -e '//.*' -e '/\*([^*]|(\*+[^*/]))*\*+\/' myfile.cpp
1322
1323       The same, but using predefined pattern c++/comments:
1324
1325              $ ugrep -n -f c++/comments myfile.cpp
1326
1327       List  the  lines that need fixing in a C/C++ source file by looking for
1328       the word `FIXME' while skipping any `FIXME' in quoted strings:
1329
1330              $ ugrep -e FIXME -N '"(\\.|\\\r?\n|[^\\\n"])*"' myfile.cpp
1331
1332       The same, but using predefined pattern cpp/zap_strings:
1333
1334              $ ugrep -e FIXME -f cpp/zap_strings myfile.cpp
1335
1336       Find lines with `FIXME' or `TODO', showing line numberes:
1337
1338              $ ugrep -n -e FIXME -e TODO myfile.cpp
1339
1340       Find lines with `FIXME' that also contain `urgent':
1341
1342              $ ugrep -n -e FIXME --and urgent myfile.cpp
1343
1344       The same, but with a Boolean query pattern (a space is AND):
1345
1346              $ ugrep -n --bool 'FIXME urgent' myfile.cpp
1347
1348       Find lines with `FIXME' that do not also contain `later':
1349
1350              $ ugrep -n -e FIXME --andnot later myfile.cpp
1351
1352       The same, but with a Boolean query pattern (a space is AND, - is NOT):
1353
1354              $ ugrep -n --bool 'FIXME -later' myfile.cpp
1355
1356       Output a list of line numbers of lines with `FIXME' but not `later':
1357
1358              $ ugrep -e FIXME --andnot later --format='%,%n' myfile.cpp
1359
1360       Recursively list all files with both `FIXME' and `LICENSE' anywhere  in
1361       the file, not necessarily on the same line:
1362
1363              $ ugrep -l --files --bool 'FIXME LICENSE'
1364
1365       Find lines with `FIXME' in the C/C++ files stored in a tarball:
1366
1367              $ ugrep -z -tc++ -n FIXME project.tgz
1368
1369       Recursively  find  lines with `FIXME' in C/C++ files, but do not search
1370       any `bak' and `old' directories:
1371
1372              $ ugrep -n FIXME -tc++ -g^bak/,^old/
1373
1374       Recursively search for the word `copyright' in cpio/jar/pax/tar/zip ar‐
1375       chives, compressed and regular files, and in PDFs using a PDF filter:
1376
1377              $ ugrep -z -w --filter='pdf:pdftotext % -' copyright
1378
1379       Match the binary pattern `A3hhhhA3' (hex) in a binary file without Uni‐
1380       code pattern matching -U (which would otherwise match `\xaf' as a  Uni‐
1381       code  character  U+00A3 with UTF-8 byte sequence C2 A3) and display the
1382       results in hex with --hexdump with C1 to output one hex line before and
1383       after each match:
1384
1385              $ ugrep -U --hexdump=C1 '\xa3[\x00-\xff]{2}\xa3' a.out
1386
1387       Hexdump an entire file using a pager for viewing:
1388
1389              $ ugrep -X --pager '' a.out
1390
1391       List all files that are not ignored by one or more `.gitignore':
1392
1393              $ ugrep -l '' --ignore-files
1394
1395       List  all files containing a RPM signature, located in the `rpm' direc‐
1396       tory and recursively below up to two levels deeper (3 levels total):
1397
1398              $ ugrep -3 -l -tRpm '' rpm/
1399
1400       Monitor the system log for bug reports and ungroup multiple matches  on
1401       a line:
1402
1403              $ tail -f /var/log/system.log | ugrep -u -i -w bug
1404
1405       Interactive fuzzy search with Boolean search queries:
1406
1407              $ ugrep -Q --bool -Z3 --sort=best
1408
1409       Display all words in a MacRoman-encoded file that has CR newlines:
1410
1411              $ ugrep --encoding=MACROMAN '\w+' mac.txt
1412
1413       Display options related to "fuzzy" searching:
1414
1415              $ ugrep --help fuzzy
1416

BUGS

1418       Report bugs at:
1419
1420              https://github.com/Genivia/ugrep/issues
1421

LICENSE

1423       ugrep  is  released under the BSD-3 license.  All parts of the software
1424       have reasonable copyright terms permitting free  redistribution.   This
1425       includes the ability to reuse all or parts of the ugrep source tree.
1426

SEE ALSO

1428       grep(1).
1429
1430
1431
1432ugrep 3.11.2                    April 07, 2023                        UGREP(1)
Impressum