Provided by: ugrep_5.0.0+dfsg-1_amd64 bug

NAME

       ugrep, ug -- file pattern searcher

SYNOPSIS

       ugrep [OPTIONS] [-i] [-Q|PATTERN] [-e PATTERN] [-N PATTERN] [-f FILE]
             [-F|-G|-P|-Z] [-U] [-m [MIN,][MAX]] [--bool [--files|--lines]]
             [-r|-R|-1|...|-9|-10|...] [-t TYPES] [-g GLOBS] [--sort[=KEY]]
             [-l|-c] [-o] [-n] [-k] [-b] [-A NUM] [-B NUM] [-C NUM] [-y]
             [--color[=WHEN]|--colour[=WHEN]] [--pretty] [--pager[=COMMAND]]
             [--hexdump|--csv|--json|--xml] [-I] [-z] [--zmax=NUM] [FILE ...]

DESCRIPTION

       The  ugrep  utility searches any given input files, selecting lines that match one or more
       patterns specified as regular expressions or as fixed strings.  A pattern matches multiple
       input  lines when the pattern's regular expression matches one or more newlines.  An empty
       pattern matches every line.  Each input line that matches at least one of the patterns  is
       written to the standard output.

       The  ug  command  is intended for interactive searching, using a .ugrep configuration file
       located in the working directory or home directory, see CONFIGURATION.  ug  is  equivalent
       to  ugrep --config --pretty --sort to load a .ugrep file, enhance the terminal output, and
       sort files by name.

       The ugrep+ and ug+ commands are the same as the  ugrep  and  ug  commands,  but  also  use
       filters  to  search  pdfs,  documents, e-books, and image metadata, when the corresponding
       filter tools are installed.

       A list of matching files is produced with option  -l  (--files-with-matches).   Option  -c
       (--count)  counts  the number of matching lines.  When combined with option -o, counts the
       total number of matches.  When combined with option -m1, (--min-count=1), skips files with
       zero matches.

       The  default pattern syntax is an extended form of the POSIX ERE syntax, same as option -E
       (--extended-regexp).  Try ug --help regex for help with pattern  syntax  and  how  to  use
       logical  connectives  to  specify  Boolean search queries with option -% (--bool) to match
       lines and -%% (--bool --files) to match files.  Options -F (--fixed-strings), -G (--basic-
       regexp) and -P (--perl-regexp) specify other pattern syntaxes.

       Option  -i  (--ignore-case) ignores case in ASCII patterns.  When combined with option -P,
       ignores case in Unicode patterns.  Option -j (--smart-case) enables -i only if the  search
       patterns are specified in lower case.

       Fuzzy (approximate) search is specified with option -Z (--fuzzy) with an optional argument
       to control character insertions, deletions, and/or substitutions.  Try ug --help fuzzy for
       help with fuzzy search.

       Note  that  pattern `.' matches any non-newline character.  Pattern `\n' matches a newline
       character.  Multiple lines may be matched with patterns that match  one  or  more  newline
       characters.

       The  empty  pattern  ""  matches  all  lines.   Other empty-matching patterns do not.  For
       example, the pattern `a*' will match one or more a's.  Option -Y forces empty matches  for
       compatibility with other grep tools.

       Option -f FILE matches patterns specified in FILE.

       By  default  Unicode patterns are matched.  Option -U (--binary) disables Unicode matching
       for ASCII and binary pattern matching.  Non-Unicode matching is generally more efficient.

       ugrep accepts input of various encoding formats and normalizes the output to UTF-8.   When
       a  UTF byte order mark is present in the input, the input is automatically normalized.  An
       input encoding format may be specified with option --encoding.

       If no FILE arguments are specified and standard input is read from a  terminal,  recursive
       searches  are  performed  as  if  -r  is specified.  To force reading from standard input,
       specify `-' as a FILE argument.

       Directories specified as  FILE  arguments  are  searched  without  recursing  deeper  into
       subdirectories,   unless  -R,  -r,  or  -2...-9  is  specified  to  search  subdirectories
       recursively (up to the specified depth.)

       Option -I (--ignore-binary) ignores binary files.  A binary file is a file  with  non-text
       content.  A file with zero bytes or invalid UTF formatting is considered binary.

       Hidden  files  and  directories  are  ignored in recursive searches.  Option -. (--hidden)
       includes hidden files and directories in recursive searches.

       To match the names of files to search and the names of directories to recurse, one or more
       of  the  following  options  may  be  specified.  Option -O specifies one or more filename
       extensions to match.  Option -t specifies one or  more  file  types  to  search  (-t  list
       outputs  a  list  of  types.)  Option -g specifies a gitignore-style glob pattern to match
       filenames.  Option --ignore-files specifies a file with gitignore-style  globs  to  ignore
       directories  and  files.   Try  ug  --help globs for help with filename and directory name
       matching.  See also section GLOBBING.

       Compressed files and archives are searched with option -z (--decompress).  When used  with
       option  --zmax=NUM,  searches  the contents of compressed files and archives stored within
       archives up to NUM levels.

       A query terminal user interface (TUI) is opened with -Q (--query) to interactively specify
       search  patterns and view search results.  A PATTERN argument requires -e PATTERN to start
       the query TUI with the specified pattern.

       Output to a terminal for viewing is enhanced with --pretty, which is  enabled  by  default
       with the ug command.

       A terminal output pager is enabled with --pager.

       Customized output is produced with option --format or --replace.  Try ug --help format for
       help with custom formatting of the output.  Predefined formats  include  CSV  with  option
       --csv,  JSON  with  option  --json,  and  XML with option --xml.  Hexdumps are output with
       option -X (--hex) or with option  --hexdump  to  customize  hexdumps.   See  also  section
       FORMAT.

       A `--' signals the end of options; the rest of the parameters are FILE arguments, allowing
       filenames to begin with a `-' character.

       Long options may start with `--no-' to disable, when applicable.

       ug --help WHAT displays help on options related to WHAT.

       The following options are available:

       -A NUM, --after-context=NUM
              Output  NUM  lines  of  trailing  context   after   matching   lines.    Places   a
              --group-separator between contiguous groups of matches.  If -o is specified, output
              the match with context to fit NUM columns after the match or  shortens  the  match.
              See also options -B, -C and -y.

       -a, --text
              Process   a   binary  file  as  if  it  were  text.   This  is  equivalent  to  the
              --binary-files=text option.   This  option  might  output  binary  garbage  to  the
              terminal, which can have problematic consequences if the terminal driver interprets
              some of it as commands.

       --all, -@
              Search  all  files  except  hidden:  cancel  previous  file  and  directory  search
              restrictions   and   cancel  --ignore-binary  and  --ignore-files  when  specified.
              Restrictions specified after this option, i.e. to the  right,  are  still  applied.
              For example, -@I searches all non-binary files and -@. searches all files including
              hidden files.  Note that hidden files and directories are  never  searched,  unless
              option -. or --hidden is specified.

       --and [-e] PATTERN
              Specify  additional  PATTERN that must match.  Additional -e PATTERN following this
              option is considered an alternative pattern to match, i.e. each -e  is  interpreted
              as  an  OR pattern enclosed within the AND.  For example, -e A -e B --and -e C -e D
              matches lines with (`A' or `B') and (`C' or `D').  Note that  multiple  -e  PATTERN
              are  alternations  that  bind  more  tightly  together  than --and.  Option --stats
              displays the search patterns applied.  See also options  --not,  --andnot,  --bool,
              --files and --lines.

       --andnot [-e] PATTERN
              Combines --and --not.  See also options --and, --not and --bool.

       -B NUM, --before-context=NUM
              Output   NUM   lines   of   leading   context  before  matching  lines.   Places  a
              --group-separator between contiguous groups of matches.  If -o is specified, output
              the  match  with context to fit NUM columns before the match or shortens the match.
              See also options -A, -C and -y.

       -b, --byte-offset
              The offset in bytes of a pattern match is displayed  in  front  of  the  respective
              matched  line.   When -u is specified, displays the offset for each pattern matched
              on the same line.  Byte offsets are exact for ASCII, UTF-8 and  raw  binary  input.
              Otherwise, the byte offset in the UTF-8 normalized input is displayed.

       --binary-files=TYPE
              Controls  searching  and  reporting  pattern  matches in binary files.  TYPE can be
              `binary', `without-match`, `text`, `hex` and `with-hex'.  The default  is  `binary'
              to  search  binary  files  and  to  report  a  match  without displaying the match.
              `without-match' ignores binary matches.  `text' treats all binary  files  as  text,
              which  might  output  binary  garbage  to  the terminal, which can have problematic
              consequences if the terminal driver interprets  some  of  it  as  commands.   `hex'
              reports  all  matches  in  hexadecimal.   `with-hex' only reports binary matches in
              hexadecimal, leaving text  matches  alone.   A  match  is  considered  binary  when
              matching a zero byte or invalid UTF.  Short options are -a, -I, -U, -W and -X.

       --bool, -%, -%%
              Specifies  Boolean  query  patterns.  A Boolean query pattern is composed of `AND',
              `OR', `NOT' operators and grouping with `(' `)'.  Spacing  between  subpatterns  is
              the  same  as  `AND',  `|' is the same as `OR' and a `-' is the same as `NOT'.  The
              `OR' operator binds more tightly than `AND'.  For example, --bool 'A|B C|D' matches
              lines  with (`A' or `B') and (`C' or `D'), --bool 'A -B' matches lines with `A' and
              not `B'.  Operators `AND', `OR', `NOT' require proper spacing.  For example, --bool
              'A OR B AND C OR D' matches lines with (`A' or `B') and (`C' or `D'), --bool 'A AND
              NOT B' matches  lines  with  `A'  without  `B'.   Quoted  subpatterns  are  matched
              literally  as  strings.   For example, --bool 'A "AND"|"OR"' matches lines with `A'
              and also either `AND' or `OR'.  Parentheses are used for  grouping.   For  example,
              --bool  '(A B)|C' matches lines with `A' and `B', or lines with `C'.  Note that all
              subpatterns in a Boolean query  pattern  are  regular  expressions,  unless  -F  is
              specified.   Options  -E,  -F,  -G,  -P and -Z can be combined with --bool to match
              subpatterns as strings or regular expressions (-E is  the  default.)   This  option
              does  not  apply  to -f FILE patterns.  The double short option -%% enables options
              --bool --files.  Option --stats displays the Boolean search patterns applied.   See
              also options --and, --andnot, --not, --files and --lines.

       --break
              Adds  a line break between results from different files.  This option is enabled by
              --heading.

       -C NUM, --context=NUM
              Output NUM lines of leading and trailing context surrounding  each  matching  line.
              Places  a  --group-separator  between  contiguous  groups  of  matches.   If  -o is
              specified, output the match with context to fit NUM columns before  and  after  the
              match or shortens the match.  See also options -A, -B and -y.

       -c, --count
              Only  a  count  of  selected  lines  is written to standard output.  If -o or -u is
              specified, counts the number of patterns matched.  If -v is specified,  counts  the
              number  of  non-matching  lines.   If  -m1,  (with  a  comma  or  --min-count=1) is
              specified, counts only matching files without outputting zero matches.   If  --tree
              is specified, outputs directories in a tree-like format.

       --color[=WHEN], --colour[=WHEN]
              Mark  up  the  matching  text with the colors specified with option --colors or the
              GREP_COLOR or GREP_COLORS environment variable.  WHEN can be `never', `always',  or
              `auto',  where `auto' marks up matches only when output on a terminal.  The default
              is `auto'.

       --colors=COLORS, --colours=COLORS
              Use COLORS to mark up text.  COLORS is  a  colon-separated  list  of  one  or  more
              parameters `sl=' (selected line), `cx=' (context line), `mt=' (matched text), `ms='
              (match selected), `mc=' (match context), `fn=' (file name),  `ln='  (line  number),
              `cn='  (column number), `bn=' (byte offset), `se=' (separator), `qp=' (TUI prompt),
              `qe=' (TUI errors), `qr=' (TUI regex), `qm=' (TUI  regex  meta  characters),  `ql='
              (TUI  regex  lists  and  literals), `qb=' (TUI regex braces).  Parameter values are
              ANSI SGR color codes or `k' (black), `r' (red),  `g'  (green),  `y'  (yellow),  `b'
              (blue), `m' (magenta), `c' (cyan), `w' (white), or leave empty for no color.  Upper
              case specifies background colors.  A `+' qualifies a color as bright.  A foreground
              and  a  background  color  may  be  combined with font properties `n' (normal), `f'
              (faint), `h' (highlight), `i' (invert), `u' (underline).   Parameter  `hl'  enables
              file  name hyperlinks.  Parameter `rv' reverses the `sl=' and `cx=' parameters when
              option -v is specified.  Selectively overrides GREP_COLORS.

       --config[=FILE], ---[FILE]
              Use configuration FILE.  The default FILE is `.ugrep'.  The  working  directory  is
              checked  first  for  FILE,  then  the home directory.  The options specified in the
              configuration FILE are parsed first, followed by the remaining options specified on
              the  command  line.   The  ug  command automatically loads a `.ugrep' configuration
              file, unless --config=FILE or --no-config is specified.

       --no-config
              Do not automatically load the default .ugrep configuration file.

       --confirm
              Confirm actions in -Q query TUI.  The default is confirm.

       --cpp  Output file matches in C++.  See also options --format and -u.

       --csv  Output file matches in CSV.  If -H, -n, -k, or -b is specified,  additional  values
              are output.  See also options --format and -u.

       -D ACTION, --devices=ACTION
              If  an  input  file  is  a  device,  FIFO  or socket, use ACTION to process it.  By
              default, ACTION is `skip', which means  that  devices  are  silently  skipped.   If
              ACTION is `read', devices read just as if they were ordinary files.

       -d ACTION, --directories=ACTION
              If  an  input file is a directory, use ACTION to process it.  By default, ACTION is
              `skip', i.e., silently skip directories unless specified on the command  line.   If
              ACTION is `read', warn when directories are read as input.  If ACTION is `recurse',
              read all files under each directory, recursively, following symbolic links only  if
              they  are  on the command line.  This is equivalent to the -r option.  If ACTION is
              `dereference-recurse', read all files under each directory, recursively,  following
              symbolic links.  This is equivalent to the -R option.

       --delay=DELAY
              Set the default -Q key response delay.  Default is 3 for 300ms.

       --depth=[MIN,][MAX], -1, -2, -3, ... -9, -10, -11, ...
              Restrict  recursive  searches  from  MIN  to  MAX  directory  levels deep, where -1
              (--depth=1) searches the specified path without recursing into subdirectories.  The
              short forms -3 -5, -3-5 and -3,5 search 3 to 5 levels deep.  Enables -r if -R or -r
              is not specified.

       --dotall
              Dot `.' in regular expressions matches anything, including newline.  Note that `.*'
              matches all input and should not be used.

       -E, --extended-regexp
              Interpret patterns as extended regular expressions (EREs). This is the default.

       -e PATTERN, --regexp=PATTERN
              Specify a PATTERN to search the input.  An input line is selected if it matches any
              of the specified patterns.  Note that longer patterns take precedence over  shorter
              patterns.   This option is most useful when multiple -e options are used to specify
              multiple patterns, when a pattern begins with a dash (`-'), to  specify  a  pattern
              after option -f or after the FILE arguments.

       --encoding=ENCODING
              The  encoding  format of the input.  The default ENCODING is binary and UTF-8 which
              are the same.  Note that option -U specifies binary PATTERN matching (text matching
              is   the   default.)   ENCODING  can  be:  `binary',  `ASCII',  `UTF-8',  `UTF-16',
              `UTF-16BE', `UTF-16LE', `UTF-32', `UTF-32BE', `UTF-32LE',  `LATIN1',  `ISO-8859-1',
              `ISO-8859-2', `ISO-8859-3', `ISO-8859-4', `ISO-8859-5', `ISO-8859-6', `ISO-8859-7',
              `ISO-8859-8',   `ISO-8859-9',    `ISO-8859-10',    `ISO-8859-11',    `ISO-8859-13',
              `ISO-8859-14',  `ISO-8859-15', `ISO-8859-16', `MAC', `MACROMAN', `EBCDIC', `CP437',
              `CP850', `CP858',  `CP1250',  `CP1251',  `CP1252',  `CP1253',  `CP1254',  `CP1255',
              `CP1256', `CP1257', `CP1258', `KOI8-R', `KOI8-U', `KOI8-RU'.

       --exclude=GLOB
              Exclude  files  whose  name matches GLOB, same as -g ^GLOB.  GLOB can use **, *, ?,
              and [...] as wildcards and \ to quote a wildcard or backslash character  literally.
              When  GLOB  contains  a  `/',  full pathnames are matched.  Otherwise basenames are
              matched.  When GLOB ends with a `/', directories are excluded as  if  --exclude-dir
              is  specified.   Otherwise  files  are excluded.  Note that --exclude patterns take
              priority over --include patterns.  GLOB should be quoted to prevent shell globbing.
              This option may be repeated.

       --exclude-dir=GLOB
              Exclude  directories  whose  name  matches GLOB from recursive searches, same as -g
              ^GLOB/.  GLOB can use **, *, ?, and [...] as wildcards and \ to quote a wildcard or
              backslash  character  literally.   When  GLOB  contains  a  `/', full pathnames are
              matched.  Otherwise basenames are matched.  Note that --exclude-dir  patterns  take
              priority  over  --include-dir  patterns.   GLOB  should  be quoted to prevent shell
              globbing.  This option may be repeated.

       --exclude-from=FILE
              Read the globs from FILE and skip files and directories whose name matches  one  or
              more  globs.   A  glob  can  use  **, *, ?, and [...] as wildcards and \ to quote a
              wildcard or backslash character literally.   When  a  glob  contains  a  `/',  full
              pathnames  are  matched.  Otherwise basenames are matched.  When a glob ends with a
              `/', directories are excluded as if --exclude-dir is  specified.   Otherwise  files
              are excluded.  A glob starting with a `!' overrides previously-specified exclusions
              by including matching files.  Lines starting with a `#' and empty lines in FILE are
              ignored.  When FILE is a `-', standard input is read.  This option may be repeated.

       --exclude-fs=MOUNTS
              Exclude  file  systems  specified  by  MOUNTS from recursive searches.  MOUNTS is a
              comma-separated list of mount points or pathnames to directories.  When  MOUNTS  is
              not  specified,  only  descends into the file systems associated with the specified
              file and directory search targets, i.e. excludes all other file systems.  Note that
              --exclude-fs=MOUNTS  take  priority  over  --include-fs=MOUNTS.  This option may be
              repeated.

       -F, --fixed-strings
              Interpret pattern as a set of fixed strings, separated by newlines, any of which is
              to be matched.  This makes ugrep behave as fgrep.  If a PATTERN is specified, or -e
              PATTERN or -N PATTERN, then this option has no effect on -f FILE patterns to  allow
              -f FILE patterns to narrow or widen the scope of the PATTERN search.

       -f FILE, --file=FILE
              Read newline-separated patterns from FILE.  White space in patterns is significant.
              Empty lines in FILE are ignored.  If FILE does not exist, the GREP_PATH environment
              variable   is   used   as  path  to  FILE.   If  that  fails,  looks  for  FILE  in
              /usr/local/share/ugrep/patterns.  When FILE is  a  `-',  standard  input  is  read.
              Empty  files  contain  no  patterns;  thus  nothing is matched.  This option may be
              repeated.

       --filter=COMMANDS
              Filter files through the specified COMMANDS first before searching.  COMMANDS is  a
              comma-separated   list   of   `exts:command   [option  ...]',  where  `exts'  is  a
              comma-separated list of filename extensions and  `command'  is  a  filter  utility.
              Files  matching  one  of  `exts' are filtered.  When `exts' is a `*', all files are
              filtered.  One or more `option' separated by spacing may be  specified,  which  are
              passed  verbatim  to  the  command.  A `%' as `option' expands into the pathname to
              search.  For example, --filter='pdf:pdftotext % -' searches  PDF  files.   The  `%'
              expands  into  a `-' when searching standard input.  When a `%' is not specified, a
              filter utility should read from  standard  input  and  write  to  standard  output.
              Option  --label=.ext may be used to specify extension `ext' when searching standard
              input.  This option may be repeated.

       --filter-magic-label=[+]LABEL:MAGIC
              Associate LABEL with files whose signature "magic  bytes"  match  the  MAGIC  regex
              pattern.   Only files that have no filename extension are labeled, unless +LABEL is
              specified.  When LABEL matches an extension  specified  in  --filter=COMMANDS,  the
              corresponding command is invoked.  This option may be repeated.

       --format=FORMAT
              Output   FORMAT-formatted   matches.   For  example  --format='%f:%n:%O%~'  outputs
              matching lines `%O' with filename `%f` and line number `%n' followed by  a  newline
              `%~'.   If  -P  is  specified,  FORMAT  may  include  `%1'  to  `%9', `%[NUM]#' and
              `%[NAME]#' to output group captures.   A  `%%'  outputs  `%'.   See  `ugrep  --help
              format'  and  `man ugrep' section FORMAT for details.  When option -o is specified,
              option -u is also enabled.  Context options -A, -B, -C and -y are ignored.

       --free-space
              Spacing (blanks and tabs) in regular expressions are ignored.

       -G, --basic-regexp
              Interpret patterns as basic regular expressions (BREs).

       -g GLOBS, --glob=GLOBS, --iglob=GLOBS
              Only search files whose name matches the specified comma-separated list  of  GLOBS,
              same  as  --include=glob  for each `glob' in GLOBS.  When a `glob' is preceded by a
              `!' or a `^', skip files whose name matches `glob', same as --exclude='glob'.  When
              `glob'  contains  a  `/',  full  pathnames  are  matched.   Otherwise basenames are
              matched.   When  `glob'  ends  with  a  `/',  directories  are  matched,  same   as
              --include-dir='glob'  and  --exclude-dir='glob'.  A leading `/' matches the working
              directory.  Option --iglob performs case-insensitive name  matching.   This  option
              may  be repeated and may be combined with options -M, -O and -t to expand searches.
              See `ugrep --help globs' and `man ugrep' section GLOBBING for details.

       --glob-ignore-case
              Perform case-insensitive glob matching in general.

       --group-separator[=SEP]
              Use SEP as a group separator for context options -A, -B and -C.  The default  is  a
              double hyphen (`--').

       --no-group-separator
              Removes the group separator line from the output for context options -A, -B and -C.

       -H, --with-filename
              Always  print  the  filename  with output lines.  This is the default when there is
              more than one file to search.

       -h, --no-filename
              Never print filenames with output lines.  This is the default when  there  is  only
              one file (or only standard input) to search.

       --heading, -+
              Group  matches  per  file.   Adds  a  heading and a line break between results from
              different files.  This option is enabled by --pretty when the output is sent  to  a
              terminal.

       --help [WHAT], -? [WHAT]
              Display  a  help  message  on options related to WHAT when specified.  In addition,
              `--help regex' displays an overview of regular expressions, `--help globs' displays
              an  overview  of  glob  syntax and conventions.  `--help fuzzy' displays details of
              fuzzy search with option -Z and `--help format' displays a list of --format fields.

       --hexdump[=[1-8][a][bch][A[NUM]][B[NUM]][C[NUM]]]
              Output matches in 1 to 8 columns of 8 hexadecimal octets.  The default is 2 columns
              or  16  octets  per  line.   Option  `a'  outputs  a `*' for all hex lines that are
              identical to the previous hex line, `b' removes all space breaks, `c'  removes  the
              character  column,  `h' removes hex spacing, `A' includes up to NUM hex lines after
              the match, `B' includes up to NUM hex lines before the match and `C' includes up to
              NUM  hex  lines.  When NUM is omitted, the matching line is included in the output.
              See also options -U, -W and -X.

       --hidden, -.
              Search hidden files and directories.

       --hyperlink[=[PREFIX][+]]
              Hyperlinks  are  enabled  for  file  names  when  colors  are  enabled.   Same   as
              --colors=hl.   When  PREFIX  is  specified,  replaces file:// with PREFIX:// in the
              hyperlink.  A `+' includes the line number in the hyperlink and when option  -k  is
              specified, the column number.

       -I, --ignore-binary
              Ignore   matches   in   binary   files.    This   option   is   equivalent  to  the
              --binary-files=without-match option.

       -i, --ignore-case
              Perform case insensitive matching.   By  default,  ugrep  is  case  sensitive.   By
              default,  this  option  applies  to  ASCII letters only.  Use options -P and -i for
              Unicode case insensitive matching.

       --ignore-files[=FILE]
              Ignore files and directories matching the globs in each FILE that is encountered in
              recursive  searches.   The  default  FILE  is  `.gitignore'.   Matching  files  and
              directories located in the directory of the FILE and in  subdirectories  below  are
              ignored.   Globbing syntax is the same as the --exclude-from=FILE gitignore syntax,
              but files and directories are excluded instead  of  only  files.   Directories  are
              specifically  excluded  when  the  glob  ends  in  a  `/'.   Files  and directories
              explicitly specified as command line arguments are never ignored.  This option  may
              be repeated to specify additional files.

       --no-ignore-files
              Do not ignore files, i.e. cancel --ignore-files when specified.

       --include=GLOB
              Only search files whose name matches GLOB, same as -g GLOB.  GLOB can use **, *, ?,
              and [...] as wildcards and \ to quote a wildcard or backslash character  literally.
              When  GLOB  contains  a  `/',  full pathnames are matched.  Otherwise basenames are
              matched.  When GLOB ends with a `/', directories are included as  if  --include-dir
              is  specified.   Otherwise  files  are included.  Note that --exclude patterns take
              priority over --include patterns.  GLOB should be quoted to prevent shell globbing.
              This option may be repeated.

       --include-dir=GLOB
              Only  directories  whose name matches GLOB are included in recursive searches, same
              as -g GLOB/.  GLOB can use **, *, ?, and [...]  as  wildcards  and  \  to  quote  a
              wildcard  or  backslash  character  literally.   When  GLOB  contains  a  `/', full
              pathnames are matched.  Otherwise basenames are matched.  Note  that  --exclude-dir
              patterns  take  priority  over  --include-dir  patterns.   GLOB should be quoted to
              prevent shell globbing.  This option may be repeated.

       --include-from=FILE
              Read the globs from FILE and search only files and directories whose  name  matches
              one  or more globs.  A glob can use **, *, ?, and [...] as wildcards and \ to quote
              a wildcard or backslash character literally.  When a  glob  contains  a  `/',  full
              pathnames  are  matched.  Otherwise basenames are matched.  When a glob ends with a
              `/', directories are included as if --include-dir is  specified.   Otherwise  files
              are included.  A glob starting with a `!' overrides previously-specified inclusions
              by excluding matching files.  Lines starting with a `#' and empty lines in FILE are
              ignored.  When FILE is a `-', standard input is read.  This option may be repeated.

       --include-fs=MOUNTS
              Only  file  systems specified by MOUNTS are included in recursive searches.  MOUNTS
              is a comma-separated list of mount points or pathnames to directories.  When MOUNTS
              is  not  specified,  restricts recursive searches to the file system of the working
              directory,  same  as  --include-fs=.  (dot).  Note  that  --exclude-fs=MOUNTS  take
              priority over --include-fs=MOUNTS.  This option may be repeated.

       --index
              Perform  index-based  recursive search.  This option assumes, but does not require,
              that files are indexed  with  ugrep-indexer.   This  option  accelerates  recursive
              searching  by  skipping  non-matching  files,  archives  and  compressed files when
              indexed.  Significant acceleration may be achieved on cold  (not  file-cached)  and
              large  file  systems,  or  any  file  system that is slow to search.  Note that the
              start-up time to search is increased, which may be significant when complex  search
              patterns  are  specified that contain large Unicode character classes combined with
              `*' or `+'  repeats,  which  should  be  avoided.   Option  -U  (--ascii)  improves
              performance.  Option --stats displays an index search report.

       -J NUM, --jobs=NUM
              Specifies  the  number  of  threads spawned to search files.  By default an optimum
              number of  threads  is  spawned  to  search  files  simultaneously.   -J1  disables
              threading: files are searched in the same order as specified.

       -j, --smart-case
              Perform  case  insensitive  matching,  unless a pattern is specified with a literal
              upper case ASCII letter.

       --json Output file matches in JSON.  If -H, -n, -k, or -b is specified, additional  values
              are output.  See also options --format and -u.

       -K [MIN,][MAX], --range=[MIN,][MAX], --min-line=MIN, --max-line=MAX
              Start searching at line MIN, stop at line MAX when specified.

       -k, --column-number
              The  column  number  of  a  pattern  match  is displayed in front of the respective
              matched line, starting at column 1.  Tabs are expanded  in  counting  columns,  see
              also option --tabs.

       -L, --files-without-match
              Only  the  names  of  files  not  containing selected lines are written to standard
              output.  Pathnames are listed once per file searched.  If  the  standard  input  is
              searched,  the  string  ``(standard  input)''  is written.  If --tree is specified,
              outputs directories in a tree-like format.

       -l, --files-with-matches
              Only the names of files containing selected lines are written to  standard  output.
              ugrep  will  only  search  a  file  until  a  match has been found, making searches
              potentially less expensive.  Pathnames are listed once per file searched.   If  the
              standard  input is searched, the string ``(standard input)'' is written.  If --tree
              is specified, outputs directories in a tree-like format.

       --label=LABEL
              Displays the LABEL value when input is read from standard input where a  file  name
              would  normally  be  printed  in  the output.  Associates a filename extension with
              standard input when LABEL has a suffix.  The default value is `(standard input)'.

       --line-buffered
              Force output to be line buffered instead of block buffered.

       --lines
              Boolean line matching mode for option --bool, the default mode.

       -M MAGIC, --file-magic=MAGIC
              Only search files matching the magic signature pattern MAGIC.  The signature "magic
              bytes"  at  the  start  of  a  file  are compared to the MAGIC regex pattern.  When
              matching, the file will be searched.  When MAGIC is preceded by a  `!'  or  a  `^',
              skip  files with matching MAGIC signatures.  This option may be repeated and may be
              combined with options -O and -t to expand the search.  Every  file  on  the  search
              path is read, making searches potentially more expensive.

       -m [MIN,][MAX], --min-count=MIN, --max-count=MAX
              Require  MIN  matches,  stop  after  MAX matches when specified.  Output MIN to MAX
              matches.  For example, -m1 outputs the first match and -cm1, (with a comma)  counts
              nonzero  matches.   If  -u  is  specified,  each individual match counts.  See also
              option -K.

       --match
              Match all input.  Same as specifying an empty pattern to search.

       --max-files=NUM
              Restrict the number of files matched to NUM.   Note  that  --sort  or  -J1  may  be
              specified  to  produce  replicable  results.  If --sort is specified, the number of
              threads spawned is limited to NUM.

       --mmap[=MAX]
              Use memory maps to search files.  By default, memory maps are  used  under  certain
              conditions  to  improve  performance.   When  MAX  is specified, use up to MAX mmap
              memory per thread.

       -N PATTERN, --neg-regexp=PATTERN
              Specify a negative PATTERN to reject specific -e PATTERN  matches  with  a  counter
              pattern.   Note  that longer patterns take precedence over shorter patterns, i.e. a
              negative pattern must be of the same length or longer to reject matching  patterns.
              Option -N cannot be specified with -P.  This option may be repeated.

       -n, --line-number
              Each  output  line is preceded by its relative line number in the file, starting at
              line 1.  The line number counter is reset for each file processed.

       --not [-e] PATTERN
              Specifies that PATTERN should not match.  Note that -e A --not -e B  matches  lines
              with `A' or lines without a `B'.  To match lines with `A' that have no `B', specify
              -e A --andnot -e B.  Option --stats displays the search patterns applied.  See also
              options --and, --andnot, --bool, --files and --lines.

       -O EXTENSIONS, --file-extension=EXTENSIONS
              Only  search  files  whose  filename extensions match the specified comma-separated
              list of EXTENSIONS, same as -g '*.ext' for each `ext' in EXTENSIONS.  When an `ext'
              is  preceded by a `!' or a `^', skip files whose filename extensions matches `ext',
              same as -g '^*.ext'.  This option may be repeated and may be combined with  options
              -g, -M and -t to expand the recursive search.

       -o, --only-matching
              Only the matching part of a pattern match is output.  If -A, -B or -C is specified,
              fits the match and its context on a line within the specified number of columns.

       --only-line-number
              Only the line number of a matching line is output.   The  line  number  counter  is
              reset for each file processed.

       --files, -%%
              Boolean  file  matching  mode,  the opposite of --lines.  When combined with option
              --bool, matches a file if all  Boolean  conditions  are  satisfied.   For  example,
              --bool  --files  'A  B|C -D' matches a file if some lines match `A', and some lines
              match either `B' or `C',  and  no  line  matches  `D'.   See  also  options  --and,
              --andnot,  --not,  --bool and --lines.  The double short option -%% enables options
              --bool --files.

       -P, --perl-regexp
              Interpret PATTERN as a Perl regular expression using PCRE2.  Note that Perl pattern
              matching differs from the default grep POSIX pattern matching.

       -p, --no-dereference
              If  -R  or  -r is specified, do not follow symbolic links, even when symbolic links
              are specified on the command line.

       --pager[=COMMAND]
              When output is sent to the terminal, uses  COMMAND  to  page  through  the  output.
              COMMAND  defaults  to  environment  variable PAGER when defined or `less'.  Enables
              --heading and --line-buffered.

       --pretty[=WHEN]
              When output is sent to a terminal, enables --color, --heading, -n,  --sort,  --tree
              and  -T  when  not  explicitly disabled.  WHEN can be `never', `always', or `auto'.
              The default is `auto'.

       -Q[=DELAY], --query[=DELAY]
              Query mode: start a TUI to perform interactive searches.   This  mode  requires  an
              ANSI  capable  terminal.   An optional DELAY argument may be specified to reduce or
              increase the response time to  execute  searches  after  the  last  key  press,  in
              increments  of  100ms,  where the default is 3 (300ms delay).  No whitespace may be
              given between -Q and its argument DELAY.  Initial patterns may be specified with -e
              PATTERN,  i.e.  a  PATTERN argument requires option -e.  Press F1 or CTRL-Z to view
              the help screen.  Press F2 or CTRL-Y to invoke a command to view or edit  the  file
              shown  at  the top of the screen.  The command can be specified with option --view,
              or defaults to environment variable PAGER when defined, or EDITOR.  Press  Tab  and
              Shift-Tab  to  navigate directories and to select a file to search.  Press Enter to
              select lines to output.  Press ALT-l for option -l to list  files,  ALT-n  for  -n,
              etc.   Non-option  commands include ALT-] to increase context and ALT-} to increase
              fuzzyness.  See also options --confirm, --delay, --split and --view.

       -q, --quiet, --silent
              Quiet mode: suppress all output.  Only search a file until a match has been found.

       -R, --dereference-recursive
              Recursively read all files under each directory, following symbolic links to  files
              and directories, unlike -r.

       -r, --recursive
              Recursively  read  all files under each directory, following symbolic links only if
              they are on the command line.  Note that when no FILE arguments are  specified  and
              input  is  read  from  a  terminal,  recursive  searches  are performed as if -r is
              specified.

       --replace=FORMAT
              Replace matching patterns in the output by  FORMAT  with  `%'  fields.   If  -P  is
              specified,  FORMAT  may  include  `%1'  to `%9', `%[NUM]#' and `%[NAME]#' to output
              group captures.  A `%%' outputs `%' and `%~' outputs a newline.   See  also  option
              --format, `ugrep --help format' and `man ugrep' section FORMAT for details.

       -S, --dereference-files
              When  -r is specified, follow symbolic links to files, but not to directories.  The
              default is not to follow symbolic links.

       -s, --no-messages
              Silent mode: nonexistent and unreadable files are ignored and their error  messages
              and warnings are suppressed.

       --save-config[=FILE] [OPTIONS]
              Save  configuration  FILE  to  include OPTIONS.  Update FILE when first loaded with
              --config=FILE.  The default FILE is `.ugrep', which is automatically loaded by  the
              ug command.  When FILE is a `-', writes the configuration to standard output.  Only
              part of the OPTIONS are saved that do not cause searches to fail when combined with
              other   options.   Additional  options  may  be  specified  by  editing  the  saved
              configuration file.  A configuration file may be modified manually to  specify  one
              or  more  config[=FILE] to indirectly load the specified FILE, but recursive config
              loading is not allowed.

       --separator[=SEP]
              Use SEP as field separator between file name,  line  number,  column  number,  byte
              offset  and  the  matched  line.   The default is a colon (`:') and a bar (`|') for
              multi-line pattern matches.

       --split
              Split the -Q query TUI screen on startup.

       --sort[=KEY]
              Displays matching files in the  order  specified  by  KEY  in  recursive  searches.
              Normally  the  ug  command  sorts  by name whereas the ugrep batch command displays
              matches in no particular order to improve performance.  The sort KEY can be  `name'
              to sort by pathname (default), `best' to sort by best match with option -Z (sort by
              best match requires two passes over files, which is expensive), `size' to  sort  by
              file  size,  `used'  to  sort  by  last  access  time,  `changed'  to  sort by last
              modification time and `created' to sort by creation time.  Sorting is reversed with
              `rname',  `rbest',  `rsize',  `rused', `rchanged', or `rcreated'.  Archive contents
              are not sorted.  Subdirectories are sorted  and  displayed  after  matching  files.
              FILE arguments are searched in the same order as specified.

       --stats
              Output statistics on the number of files and directories searched and the inclusion
              and exclusion constraints applied.

       -T, --initial-tab
              Add a tab space to separate the file name, line  number,  column  number  and  byte
              offset with the matched line.

       -t TYPES, --file-type=TYPES
              Search  only  files  associated  with  TYPES, a comma-separated list of file types.
              Each file type corresponds to a set of filename extensions passed to option -O  and
              filenames  passed to option -g.  For capitalized file types, the search is expanded
              to include files with matching file signature magic bytes, as if passed  to  option
              -M.   When  a  type  is preceded by a `!' or a `^', excludes files of the specified
              type.  Specifying the initial part of a type  name  suffices  when  the  choice  is
              unambiguous.   This option may be repeated.  The possible file types can be (-tlist
              displays  a  list):  `actionscript',  `ada',  `asm',  `asp',  `aspx',   `autoconf',
              `automake',  `awk', `Awk', `basic', `batch', `bison', `c', `c++', `clojure', `cpp',
              `csharp', `css', `csv', `dart',  `Dart',  `delphi',  `elisp',  `elixir',  `erlang',
              `fortran',  `gif', `Gif', `go', `groovy', `gsp', `haskell', `html', `jade', `java',
              `jpeg', `Jpeg', `js', `json', `jsp',  `julia',  `kotlin',  `less',  `lex',  `lisp',
              `lua',  `m4',  `make',  `markdown',  `matlab',  `node',  `Node',  `objc', `objc++',
              `ocaml', `parrot', `pascal', `pdf', `Pdf', `perl',  `Perl',  `php',  `Php',  `png',
              `Png',  `prolog',  `python',  `Python',  `r',  `rpm',  `Rpm',  `rst', `rtf', `Rtf',
              `ruby', `Ruby', `rust', `scala', `scheme', `shell',  `Shell',  `smalltalk',  `sql',
              `svg',   `swift',   `tcl',  `tex',  `text',  `tiff',  `Tiff',  `tt',  `typescript',
              `verilog', `vhdl', `vim', `xml', `Xml', `yacc', `yaml', `zig'.

       --tabs[=NUM]
              Set the tab size to NUM to expand tabs for option -k.  The value of NUM may  be  1,
              2, 4, or 8.  The default tab size is 8.

       --tag[=TAG[,END]]
              Disables  colors  to  mark  up  matches  with TAG.  END marks the end of a match if
              specified, otherwise TAG.  The default is `___'.

       --tree, -^
              Output directories with matching files in a tree-like format when options -c, -l or
              -L  are  used.   This  option  is  enabled by --pretty when the output is sent to a
              terminal.

       -U, --ascii, --binary
              Disables Unicode matching for ASCII and binary matching.   PATTERN  matches  bytes,
              not  Unicode  characters.   For example, -U '\xa3' matches byte A3 (hex) instead of
              the Unicode code point U+00A3 represented by the UTF-8 sequence C2  A3.   See  also
              option --dotall.

       -u, --ungroup
              Do not group multiple pattern matches on the same matched line.  Output the matched
              line again for each additional pattern match.

       -V, --version
              Display version with linked libraries and exit.

       -v, --invert-match
              Selected lines are those not matching any of the specified patterns.

       --view[=COMMAND]
              Use COMMAND to view/edit a file in -Q query TUI by pressing CTRL-Y.

       -W, --with-hex
              Output binary matches in hexadecimal, leaving text matches alone.  This  option  is
              equivalent  to  the  --binary-files=with-hex option with --hexdump=2C.  To omit the
              matching line from the hex output, combine option --hexdump with  option  -W.   See
              also option -U.

       -w, --word-regexp
              The PATTERN is searched for as a word, such that the matching text is preceded by a
              non-word character and is followed by a non-word character.   Word  characters  are
              letters,  digits  and  the underscore.  With option -P, word characters are Unicode
              letters, digits and underscore.  This option has no effect if -x is also specified.
              If  a  PATTERN  is  specified, or -e PATTERN or -N PATTERN, then this option has no
              effect on -f FILE patterns to allow -f FILE patterns to narrow or widen  the  scope
              of the PATTERN search.

       --width[=NUM]
              Truncate  the output to NUM visible characters per line.  The width of the terminal
              window is used if NUM is not specified.  Note that double wide  characters  in  the
              output may result in wider lines.

       -X, --hex
              Output matches in hexadecimal.  This option is equivalent to the --binary-files=hex
              option with --hexdump=2C.  To omit the matching line from the hex output use option
              --hexdump.  See also option -U.

       -x, --line-regexp
              Select only those matches that exactly match the whole line, as if the patterns are
              surrounded by ^ and $.  If a PATTERN is specified, or -e  PATTERN  or  -N  PATTERN,
              then  this  option  has  no effect on -f FILE patterns to allow -f FILE patterns to
              narrow or widen the scope of the PATTERN search.

       --xml  Output file matches in XML.  If -H, -n, -k, or -b is specified,  additional  values
              are output.  See also options --format and -u.

       -Y, --empty
              Permits  empty  matches.   By default, empty matches are disabled, unless a pattern
              begins with `^' or ends with `$'.  With this option, empty-matching  patterns  such
              as x? and x*, match all input, not only lines containing the character `x'.

       -y, --any-line, --passthru
              Any line is output (passthru).  Non-matching lines are output as context with a `-'
              separator.  See also options -A, -B and -C.

       -Z[best][+-~][MAX], --fuzzy[=[best][+-~][MAX]]
              Fuzzy mode: report approximate pattern matches within MAX errors.  The  default  is
              -Z1: one deletion, insertion or substitution is allowed.  If `+`, `-' and/or `~' is
              specified, then  `+'  allows  insertions,  `-'  allows  deletions  and  `~'  allows
              substitutions.   For example, -Z+~3 allows up to three insertions or substitutions,
              but no deletions.  If `best' is specified, then only the best  matching  lines  are
              output  with  the  lowest  cost per file.  Option -Zbest requires two passes over a
              file and cannot be used with standard input or Boolean queries.  Option --sort=best
              orders  matching  files by best match.  The first character of an approximate match
              always matches a character at the beginning of the pattern.   To  fuzzy  match  the
              first  character,  replace it with a `.' or `.?'.  Option -U applies fuzzy matching
              to ASCII and bytes instead of Unicode text.  No whitespace may be given between  -Z
              and its argument.

       -z, --decompress
              Search  compressed files and archives.  Archives (.cpio, .pax, .tar) and compressed
              archives (e.g. .zip, .7z, .taz, .tgz, .tpz, .tbz, .tbz2, .tb2,  .tz2,  .tlz,  .txz,
              .tzst)  are  searched  and  matching  pathnames  of files in archives are output in
              braces.  When used with option --zmax=NUM,  searches  the  contents  of  compressed
              files  and  archives stored within archives up to NUM levels.  If -g, -O, -M, or -t
              is specified, searches files stored in archives whose filenames match globs,  match
              filename  extensions,  match  file  signature  magic  bytes,  or  match file types,
              respectively.  Supported compression formats: gzip (.gz), compress (.Z),  zip,  7z,
              bzip2  (requires  suffix  .bz,  .bz2, .bzip2, .tbz, .tbz2, .tb2, .tz2), lzma and xz
              (requires suffix  .lzma,  .tlz,  .xz,  .txz),  lz4  (requires  suffix  .lz4),  zstd
              (requires suffix .zst, .zstd, .tzst), brotli (requires suffix .br).

       --zmax=NUM
              When  used with option -z (--decompress), searches the contents of compressed files
              and archives stored within archives by up to NUM  expansion  stages.   The  default
              --zmax=1  only  permits  searching uncompressed files stored in cpio, pax, tar, zip
              and 7z archives; compressed files and archives are detected as binary files and are
              effectively  ignored.   Specify  --zmax=2  to  search compressed files and archives
              stored in cpio, pax, tar, zip and 7z archives.  NUM may range from 1 to 99  for  up
              to  99  decompression  and  de-archiving  steps.   Increasing  NUM values gradually
              degrades performance.

       -0, --null
              Output a zero-byte (NUL) after the  file  name.   This  option  can  be  used  with
              commands such as `find -print0' and `xargs -0' to process arbitrary file names.

EXIT STATUS

       The ugrep utility exits with one of the following values:

       0      One or more lines were selected.

       1      No lines were selected.

       >1     An error occurred.

       If  -q or --quiet or --silent is used and a line is selected, the exit status is 0 even if
       an error occurred.

CONFIGURATION

       The ug command is intended for context-dependent interactive searching and  is  equivalent
       to  the  ugrep  --config  --pretty  --sort  command to load the default configuration file
       `.ugrep' when present in the working directory or in the home directory.

       A configuration file contains `NAME=VALUE' pairs per line, where `NAME` is the name  of  a
       long  option  (without  `--')  and  `=VALUE'  is an argument, which is optional and may be
       omitted depending on the option.  Empty lines and lines starting with a `#' are ignored.

       The --config=FILE option and its abbreviated form ---FILE load the specified configuration
       file  located  in the working directory or, when not found, located in the home directory.
       An error is produced when FILE is not found or cannot be read.

       Command line options are parsed in the following order: the configuration file  is  loaded
       first, followed by the remaining options and arguments on the command line.

       The --save-config option saves a `.ugrep' configuration file to the working directory with
       a subset of the options specified on the  command  line.   The  --save-config=FILE  option
       saves  the  configuration  to  FILE.  The configuration is written to standard output when
       FILE is a `-'.

GLOBBING

       Globbing is used by  options  -g,  --include,  --include-dir,  --include-from,  --exclude,
       --exclude-dir,  --exclude-from  and  --ignore-files  to  match  pathnames and basenames in
       recursive searches.  Glob arguments for these options should be quoted  to  prevent  shell
       globbing.

       Globbing  supports  gitignore  syntax  and the corresponding matching rules, except that a
       glob normally matches files but not directories.  If a glob ends in a path separator  `/',
       then  it  matches  directories  but  not  files,  as  if --include-dir or --exclude-dir is
       specified.  When a glob contains a path separator  `/',  the  full  pathname  is  matched.
       Otherwise  the basename of a file or directory is matched.  For example, *.h matches foo.h
       and bar/foo.h.  bar/*.h matches bar/foo.h but not foo.h  and  not  bar/bar/foo.h.   Use  a
       leading `/' to force /*.h to match foo.h but not bar/foo.h.

       When  a  glob starts with a `^' or a `!' as in -g^GLOB, the match is negated.  Likewise, a
       `!' (but not a `^') may  be  used  with  globs  in  the  files  specified  --include-from,
       --exclude-from,  and  --ignore-files  to  negate  the  glob  match.   Empty lines or lines
       starting with a `#' are ignored.

       Glob Syntax and Conventions

       *      Matches anything except /.

       ?      Matches any one character except /.

       [abc-e]
              Matches one character a,b,c,d,e.

       [^abc-e]
              Matches one character not a,b,c,d,e,/.

       [!abc-e]
              Matches one character not a,b,c,d,e,/.

       /      When used at the start of a glob, matches if pathname has no /.  When used  at  the
              end of a glob, matches directories only.

       **/    Matches zero or more directories.

       /**    When used at the end of a glob, matches everything after the /.

       \?     Matches a ? or any other character specified after the backslash.

       Glob Matching Examples

       *      Matches a, b, x/a, x/y/b

       a      Matches a, x/a, x/y/a,       but not b, x/b, a/a/b

       /*     Matches a, b,                but not x/a, x/b, x/y/a

       /a     Matches a,                   but not x/a, x/y/a

       a?b    Matches axb, ayb,            but not a, b, ab, a/b

       a[xy]b Matches axb, ayb             but not a, b, azb

       a[a-z]b
              Matches aab, abb, acb, azb,  but not a, b, a3b, aAb, aZb

       a[^xy]b
              Matches aab, abb, acb, azb,  but not a, b, axb, ayb

       a[^a-z]b
              Matches a3b, aAb, aZb        but not a, b, aab, abb, acb, azb

       a/*/b  Matches a/x/b, a/y/b,        but not a/b, a/x/y/b

       **/a   Matches a, x/a, x/y/a,       but not b, x/b.

       a/**/b Matches a/b, a/x/b, a/x/y/b, but not x/a/b, a/b/x

       a/**   Matches a/x, a/y, a/x/y,     but not a, b/x

       a\?b   Matches a?b,                 but not a, b, ab, axb, a/b

       Note  that  exclude  glob patterns take priority over include glob patterns when specified
       with options -g, --exclude, --exclude-dir, --include and include-dir.

       Glob patterns specified with prefix `!' in any of the  files  associated  with  --include-
       from,  --exclude-from  and --ignore-files will negate a previous glob match.  That is, any
       matching file or directory excluded by a previous glob  pattern  specified  in  the  files
       associated with --exclude-from or --ignore-file will become included again.  Likewise, any
       matching file or directory included by a previous glob  pattern  specified  in  the  files
       associated with --include-from will become excluded again.

ENVIRONMENT

       GREP_PATH
              May  be  used  to  specify  a file path to pattern files.  The file path is used by
              option -f to open a pattern file, when the pattern file does not exist.

       GREP_COLOR
              May be used to specify ANSI SGR parameters to highlight matches when option --color
              is  used,  e.g.  1;35;40  shows  pattern  matches  in  bold magenta text on a black
              background.  Deprecated in favor of GREP_COLORS, but still supported.

       GREP_COLORS
              May be used  to  specify  ANSI  SGR  parameters  to  highlight  matches  and  other
              attributes  when  option  --color  is used.  Its value is a colon-separated list of
              ANSI          SGR          parameters          that           defaults           to
              cx=33:mt=1;31:fn=1;35:ln=1;32:cn=1;32:bn=1;32:se=36  with additional parameters for
              TUI  colors  :qp=1;32:qe=1;37;41:qm=1;32:ql=36:qb=1;35.   The  mt=,  ms=,  and  mc=
              capabilities  of  GREP_COLORS take priority over GREP_COLOR.  Option --colors takes
              priority over GREP_COLORS.

GREP_COLORS

       Colors are specified as  string  of  colon-separated  ANSI  SGR  parameters  of  the  form
       `what=substring', where `substring' is a semicolon-separated list of ANSI SGR codes or `k'
       (black), `r' (red), `g' (green), `y' (yellow), `b' (blue), `m' (magenta), `c' (cyan),  `w'
       (white).   Upper  case specifies background colors.  A `+' qualifies a color as bright.  A
       foreground and a background color may be combined with one or  more  font  properties  `n'
       (normal),  `f' (faint), `h' (highlight), `i' (invert), `u' (underline).  Substrings may be
       specified for:

       sl=    selected lines.

       cx=    context lines.

       rv     swaps the sl= and cx= capabilities when -v is specified.

       mt=    matching text in any matching line.

       ms=    matching text in a selected line.  The substring mt= by default.

       mc=    matching text in a context line.  The substring mt= by default.

       fn=    filenames.

       ln=    line numbers.

       cn=    column numbers.

       bn=    byte offsets.

       se=    separators.

       rv     a Boolean parameter, switches sl= and cx= with option -v.

       hl     a Boolean parameter, enables filename hyperlinks (\33]8;;link).

       ne     a Boolean parameter, disables ``erase in line'' \33[K.

       qp=    TUI prompt.

       qe=    TUI errors.

       qr=    TUI regex.

       qm=    TUI regex meta characters.

       ql=    TUI regex lists and literals.

       qb=    TUI regex braces.

FORMAT

       Option --format=FORMAT specifies an output format for file matches.  Fields may be used in
       FORMAT, which expand into the following values:

       %[TEXT]F
              if option -H is used: TEXT, the file pathname and separator.

       %f     the file pathname.

       %a     the file basename without directory path.

       %p     the directory path to the file.

       %z     the file pathname in a (compressed) archive.

       %[TEXT]H
              if  option -H is used: TEXT, the quoted pathname and separator, \" and \\ replace "
              and \.

       %h     the quoted file pathname, \" and \\ replace " and \.

       %[TEXT]N
              if option -n is used: TEXT, the line number and separator.

       %n     the line number of the match.

       %[TEXT]K
              if option -k is used: TEXT, the column number and separator.

       %k     the column number of the match.

       %[TEXT]B
              if option -b is used: TEXT, the byte offset and separator.

       %b     the byte offset of the match.

       %[TEXT]T
              if option -T is used: TEXT and a tab character.

       %t     a tab character.

       %[SEP]$
              set field separator to SEP for the rest of the format fields.

       %[TEXT]<
              if the first match: TEXT.

       %[TEXT]>
              if not the first match: TEXT.

       %,     if not the first match: a comma, same as %[,]>.

       %:     if not the first match: a colon, same as %[:]>.

       %;     if not the first match: a semicolon, same as %[;]>.

       %|     if not the first match: a vertical bar, same as %[|]>.

       %[TEXT]S
              if not the first match: TEXT and separator, see also %[SEP]$.

       %s     the separator, see also %[TEXT]S and %[SEP]$.

       %~     a newline character.

       %M     the number of matching lines

       %m     the number of matches

       %O     the matching line is output as a raw string of bytes.

       %o     the match is output as a raw string of bytes.

       %Q     the matching line as a quoted string, \" and \\ replace " and \.

       %q     the match as a quoted string, \" and \\ replace " and \.

       %C     the matching line formatted as a quoted C/C++ string.

       %c     the match formatted as a quoted C/C++ string.

       %J     the matching line formatted as a quoted JSON string.

       %j     the match formatted as a quoted JSON string.

       %V     the matching line formatted as a quoted CSV string.

       %v     the match formatted as a quoted CSV string.

       %X     the matching line formatted as XML character data.

       %x     the match formatted as XML character data.

       %w     the width of the match, counting wide characters.

       %d     the size of the match, counting bytes.

       %e     the ending byte offset of the match.

       %Z     the edit distance cost of an approximate match with option -Z

       %u     select unique lines only, unless option -u is used.

       %1     the first regex group capture of the match, and so on  up  to  group  %9,  same  as
              %[1]#; requires option -P.

       %[NUM]#
              the regex group capture NUM; requires option -P.

       %[NUM]b
              the byte offset of the group capture NUM; requires option -P.  Use e for the ending
              byte offset and d for the byte length.

       %[NUM1|NUM2|...]#
              the first group capture NUM that matched; requires option -P.

       %[NUM1|NUM2|...]b
              the byte offset of the first group capture NUM that matched;  requires  option  -P.
              Use e for the ending byte offset and d for the byte length.

       %[NAME]#
              the   NAMEd   group   capture;   requires   option   -P   and   capturing   pattern
              `(?<NAME>PATTERN)', see also %G.

       %[NAME]b
              the byte offset of the NAMEd  group  capture;  requires  option  -P  and  capturing
              pattern  `(?<NAME>PATTERN)'.   Use  e for the ending byte offset and d for the byte
              length.

       %[NAME1|NAME2|...]#
              the first NAMEd group capture  that  matched;  requires  option  -P  and  capturing
              pattern `(?<NAME>PATTERN)', see also %G.

       %[NAME1|NAME2|...]b
              the  byte  offset of the first NAMEd group capture that matched; requires option -P
              and capturing pattern `(?<NAME>PATTERN)'.  Use e for the ending byte offset  and  d
              for the byte length.

       %G     list of group capture indices/names that matched; requires option -P.

       %[TEXT1|TEXT2|...]G
              list of TEXT indexed by group capture indices that matched; requires option -P.

       %g     the group capture index/name matched or 1; requires option -P.

       %[TEXT1|TEXT2|...]g
              the  first  TEXT  indexed  by  the first group capture index that matched; requires
              option -P.

       %%     the percentage sign.

       Formatted output is written without a terminating newline, unless %~ or `\n' is explicitly
       specified in the format string.

       The  [TEXT]  part  of  a field is optional and may be omitted.  When present, the argument
       must be placed in [] brackets, for example %[,]F to output a comma, the  pathname,  and  a
       separator.

       %[SEP]$ and %u are switches and do not send anything to the output.

       The separator used by the %F, %H, %N, %K, %B, %S and %G fields may be changed by preceding
       the field by %[SEP]$.  When [SEP] is not provided,  this  reverts  the  separator  to  the
       default separator or the separator specified with --separator.

       Formatted  output  is  written  for  each matching pattern, which means that a line may be
       output multiple times when patterns match more than once on the same line.  If field %u is
       specified  anywhere in a format string, matching lines are output only once, unless option
       -u, --ungroup is specified or when more than one line of input matched the search pattern.

       Additional formatting options:

       --format-begin=FORMAT
              the FORMAT when beginning the search.

       --format-open=FORMAT
              the FORMAT when opening a file and a match was found.

       --format-close=FORMAT
              the FORMAT when closing a file and a match was found.

       --format-end=FORMAT
              the FORMAT when ending the search.

       The context options -A, -B, -C, -y, and display options --break, --heading,  --color,  -T,
       and --null have no effect on formatted output.

EXAMPLES

       Display lines containing the word `patricia' in `myfile.txt':

              $ ugrep -w patricia myfile.txt

       Display lines containing the word `patricia', ignoring case:

              $ ugrep -wi patricia myfile.txt

       Display lines approximately matching the word `patricia', ignoring case and allowing up to
       2 spelling errors using fuzzy search:

              $ ugrep -Z2 -wi patricia myfile.txt

       Count the number of lines containing `patricia', ignoring case:

              $ ugrep -cwi patricia myfile.txt

       Count the number of words `patricia', ignoring case:

              $ ugrep -cowi patricia myfile.txt

       List lines with `amount' and a decimal, ignoring case (space is AND):

              $ ugrep -i -% 'amount +(.+)?' myfile.txt

       Alternative query:

              $ ugrep -wi -e amount --and '+(.+)?' myfile.txt

       List all Unicode words in a file:

              $ ugrep -o '\w+' myfile.txt

       List all ASCII words in a file:

              $ ugrep -o '[[:word:]]+' myfile.txt

       List the laughing face emojis (Unicode code points U+1F600 to U+1F60F):

              $ ugrep -o '[\x{1F600}-\x{1F60F}]' myfile.txt

       Check if a file contains any non-ASCII (i.e. Unicode) characters:

              $ ugrep -q '[^[:ascii:]]' myfile.txt && echo "contains Unicode"

       Display the line and column number of `FIXME' in C++ files using  recursive  search,  with
       one line of context before and after a matched line:

              $ ugrep -C1 -R -n -k -tc++ FIXME

       Display  the  line  and  column number of `FIXME' in long Javascript files using recursive
       search, showing only matches with up to 10 characters of context before and after:

              $ ugrep -o -C20 -R -n -k -tjs FIXME

       List the C/C++ comments in a file with line numbers:

              $ ugrep -n -e '//.*' -e '/\*([^*]|(\*+[^*/]))*\*+\/' myfile.cpp

       The same, but using predefined pattern c++/comments:

              $ ugrep -n -f c++/comments myfile.cpp

       List the lines that need fixing in a C/C++ source file by looking  for  the  word  `FIXME'
       while skipping any `FIXME' in quoted strings:

              $ ugrep -e FIXME -N '"(\\.|\\\r?\n|[^\\\n"])*"' myfile.cpp

       The same, but using predefined pattern cpp/zap_strings:

              $ ugrep -e FIXME -f cpp/zap_strings myfile.cpp

       Find lines with `FIXME' or `TODO', showing line numberes:

              $ ugrep -n -e FIXME -e TODO myfile.cpp

       Find lines with `FIXME' that also contain `urgent':

              $ ugrep -n -e FIXME --and urgent myfile.cpp

       The same, but with a Boolean query pattern (a space is AND):

              $ ugrep -n -% 'FIXME urgent' myfile.cpp

       Find lines with `FIXME' that do not also contain `later':

              $ ugrep -n -e FIXME --andnot later myfile.cpp

       The same, but with a Boolean query pattern (a space is AND, - is NOT):

              $ ugrep -n -% 'FIXME -later' myfile.cpp

       Output a list of line numbers of lines with `FIXME' but not `later':

              $ ugrep -e FIXME --andnot later --format='%,%n' myfile.cpp

       Recursively  list  all  files  with  both  `FIXME' and `LICENSE' anywhere in the file, not
       necessarily on the same line:

              $ ugrep -l -%% 'FIXME LICENSE'

       Find lines with `FIXME' in the C/C++ files stored in a tarball:

              $ ugrep -z -tc++ -n FIXME project.tgz

       Recursively find lines with `FIXME' in C/C++ files, but do not search any `bak' and  `old'
       directories:

              $ ugrep -n FIXME -tc++ -g^bak/,^old/

       Recursively  search  for  the  word  `copyright' in cpio, jar, pax, tar, zip, 7z archives,
       compressed and regular files, and in PDFs using a PDF filter:

              $ ugrep -z -w --filter='pdf:pdftotext % -' copyright

       Match the binary pattern `A3hhhhA3'  (hex)  in  a  binary  file  without  Unicode  pattern
       matching  -U  (which would otherwise match `\xaf' as a Unicode character U+00A3 with UTF-8
       byte sequence C2 A3) and display the results in hex with --hexdump with C1 to  output  one
       hex line before and after each match:

              $ ugrep -U --hexdump=C1 '\xa3[\x00-\xff]{2}\xa3' a.out

       Hexdump an entire file using a pager for viewing:

              $ ugrep -X --pager '' a.out

       List all files that are not ignored by one or more `.gitignore':

              $ ugrep -l '' --ignore-files

       List  all files containing a RPM signature, located in the `rpm' directory and recursively
       below up to two levels deeper (3 levels total):

              $ ugrep -3 -l -tRpm '' rpm/

       Monitor the system log for bug reports and ungroup multiple matches on a line:

              $ tail -f /var/log/system.log | ugrep -u -i -w bug

       Interactive fuzzy search with Boolean search queries:

              $ ugrep -Q -l -% -Z3 --sort=best

       Display all words in a MacRoman-encoded file that has CR newlines:

              $ ugrep --encoding=MACROMAN '\w+' mac.txt

       Display options related to "fuzzy" searching:

              $ ugrep --help fuzzy

COPYRIGHT

       Copyright (c) 2021-2024 Robert A. van Engelen <engelen@acm.org>

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

BUGS

       Report bugs at: <https://github.com/Genivia/ugrep/issues>

SEE ALSO

       grep(1).