Provided by: ugrep_3.7.2+dfsg-1_amd64 bug

NAME

       ugrep, ug -- file pattern searcher

SYNOPSIS

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

DESCRIPTION

       The  ugrep  utility  searches any given input files, selecting lines that match one or more patterns.  By
       default, a pattern matches an input line if the regular  expression  (RE)  matches  the  input  line.   A
       pattern  matches multiple input lines if the RE in the pattern matches one or more newlines in the input.
       An empty pattern matches every line.  Each input line that matches  at  least  one  of  the  patterns  is
       written to the standard output.

       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; otherwise, ugrep  assumes  the
       input is ASCII, UTF-8, or raw binary.  An input encoding format may be specified with option --encoding.

       The  ug  command is equivalent to ugrep --config to load the default configuration file, which allows for
       customization, see CONFIGURATION.

       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 into subdirectories, unless -R,
       -r, or -2...-9 is specified.

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

       A  query  interface  is opened with -Q (--query) to interactively specify search patterns and view search
       results.  Note that a PATTERN argument cannot be specified in this case.  To specify one or more patterns
       with -Q, use -e PATTERN.

       Option -f FILE matches patterns specified in  FILE.   If  FILE  is  large  and  defines  complex  regular
       expression  patterns,  then  option  -P  (Perl  matching)  may  improve performance (this omits POSIX DFA
       construction.)

       ugrep --help WHAT displays help on options related to WHAT; --help format displays help on  --format  and
       --replace  formatting;  --help  regex  displays help on regular expression syntax and conventions; --help
       globs displays help on glob patterns.

       The following options are available:

       -A NUM, --after-context=NUM
              Print NUM lines of trailing context after matching  lines.   Places  a  --group-separator  between
              contiguous groups of matches.  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.

       --and [[-e] PATTERN] ... -e PATTERN
              Specify  additional  patterns  to  match.   Patterns  must  be specified with -e.  Each -e PATTERN
              following this option is considered an alternative pattern to match, i.e. each -e  is  interpreted
              as an OR pattern.  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
              Print  NUM  lines  of  leading  context before matching lines.  Places a --group-separator between
              contiguous groups of matches.  See also options -A, -C and -y.

       -b, --byte-offset
              The offset in bytes of a matched line is displayed in front of the respective matched line.  If -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'.
              Parenthesis  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  option  -F  is  used.   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.  Option --stats displays the search patterns applied.  See also options --and,
              --andnot, --not, --files and --lines.

       --break
              Adds a line break between results from different files.

       -C NUM, --context=NUM
              Print  NUM  lines  of  leading  and  trailing  context   surrounding   each   match.    Places   a
              --group-separator between contiguous groups of matches.  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.

       --color[=WHEN], --colour[=WHEN]
              Mark up the matching text with the expression stored in 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).   Parameter  values  are  ANSI  SGR color 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  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 with option -v.  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.

       --confirm
              Confirm actions in -Q query mode.  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.

       --depth=[MIN,][MAX], -1, -2 ... -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.  Note that -3 -5, -3-5, or -35 searches
              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 used during the search of 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, where 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
              Skip files whose name matches GLOB using wildcard matching, 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 of directories on 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.  The filter utility should read from standard input  and  write
              to  standard  output.   Files matching one of `exts' are filtered.  When `exts' is `*', files with
              non-matching extensions 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.  Option --label=.ext  may  be  used  to  specify  extension  `ext'  when
              searching standard input.

       --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  `%~'.   When  option  -P  is  used,
              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.   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), i.e. make ugrep behave as traditional
              grep.

       -g GLOBS, --glob=GLOBS
              Search only 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.  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.

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

       -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.

       --help [WHAT], -? [WHAT]
              Display a help message, specifically  on  WHAT  when  specified.   In  addition,  `--help  format'
              displays  an overview of FORMAT fields, `--help regex' displays an overview of regular expressions
              and `--help globs' displays an overview of glob syntax and conventions.

       --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
              Hyperlinks are enabled for file names when colors are enabled.  Same as --colors=hl.

       -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 a FILE's location and in directories below are ignored by temporarily  extending  the
              --exclude and --exclude-dir globs, as if --exclude-from=FILE is locally enforced.  Globbing syntax
              is  the  same  as the --exclude-from=FILE gitignore syntax; directories are excluded when the glob
              ends in a `/', same as git.  Files and directories explicitly specified as command line  arguments
              are never ignored.  This option may be repeated with additional files.

       --include=GLOB
              Search  only files whose name matches GLOB using wildcard matching, 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 of directories on file systems.   --include-fs=.
              restricts  recursive  searches  to  the  file  system  of  the  working directory only.  Note that
              --exclude-fs mounts take priority over --include-fs mounts.  This option may be repeated.

       -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  like option -i, unless a pattern is specified with a literal
              ASCII upper case 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 FIRST[,LAST], --range=FIRST[,LAST]
              Start searching at line FIRST, stop at line LAST when specified.

       -k, --column-number
              The  column  number  of  a  matched  pattern is displayed in front of the respective matched line,
              starting at column 1.  Tabs are expanded when columns are counted, 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.

       -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.

       --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
              Apply  Boolean queries to match lines, the opposite of --files.  This is the default Boolean query
              mode to match specific lines.

       -M MAGIC, --file-magic=MAGIC
              Only files matching the signature pattern MAGIC are searched.  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 NUM, --max-count=NUM
              Stop reading the input after NUM matches in each input file.

       --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 used during the search of the input: an input line is selected only  if
              it  matches any of the specified patterns unless a subpattern of PATTERN.  Same as -e (?^PATTERN).
              Negative pattern matches are essentially removed before any other patterns are matched.  Note that
              longer patterns take precedence over shorter patterns.  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.

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

       --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
              Search  only  files  whose  filename  extensions  match  the  specified  comma-separated  list  of
              EXTENSIONS,  same as --include='*.ext' for each `ext' in EXTENSIONS.  When an `ext' is preceded by
              a `!' or a `^', skip files whose filename extensions matches  `ext',  same  as  --exclude='*.ext'.
              This option may be repeated and may be combined with options -g, -M and -t to expand the recursive
              search.

       -o, --only-matching
              Print only the matching part of lines.  When multiple lines match, the line numbers with option -n
              are  displayed  using  `|' as the field separator for each additional line matched by the pattern.
              If -u is specified, ungroups multiple matches on the same line.  This option  cannot  be  combined
              with options -A, -B, -C, -v and -y.

       --only-line-number
              The line number of the matching line in the file is output without displaying the match.  The line
              number counter is reset for each file processed.

       --files
              Apply  Boolean  queries  to  match  files, the opposite of --lines.  A file matches if all Boolean
              conditions are satisfied by the lines matched in the file.  For example, --files -e A --and  -e  B
              -e C --andnot -e D matches a file if some lines match `A' and some lines match (`B' or `C') and no
              line  in  the  file  matches  `D'.  May also be specified as --files --bool 'A B|C -D'.  Option -v
              cannot be specified with --files.  See also options --and, --andnot, --not, --bool and --lines.

       -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, no symbolic links are followed, even when they are specified on the
              command line.

       --pager[=COMMAND]
              When output is sent to the terminal, uses COMMAND to page through the output.  The default COMMAND
              is `less -R'.  Enables --heading and --line-buffered.

       --pretty
              When output is sent to a terminal,  enables  --color,  --heading,  -n,  --sort  and  -T  when  not
              explicitly disabled or set.

       -Q[DELAY], --query[=DELAY]
              Query  mode:  user  interface 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 5 (0.5s
              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 if 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 fuzziness and  ALT-}
              to increase context.  Enables --heading.  See also options --confirm and --view.

       -q, --quiet, --silent
              Quiet mode: suppress all output.  ugrep will only search until a match has been found.

       -R, --dereference-recursive
              Recursively  read all files under each directory.  Follow all symbolic links, unlike -r.  When -J1
              is specified, files are searched in the same order as specified.  Note that when no FILE arguments
              are specified and input is read from a terminal, recursive searches are  performed  as  if  -R  is
              specified.

       -r, --recursive
              Recursively  read all files under each directory, following symbolic links only if they are on the
              command line.  When -J1 is specified, files are searched in the same order as specified.

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

       -S, --dereference
              If  -r  is  specified,  all  symbolic  links  are followed, like -R.  The default is not to follow
              symbolic links.

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

       --save-config[=FILE]
              Save configuration FILE.  By default `.ugrep' is saved.  If FILE is a `-', write the configuration
              to standard output.

       --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 (`:').

       --sort[=KEY]
              Displays matching files in the order specified by KEY in recursive searches.  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  the input files), `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.  Normally ugrep displays matches in no
              particular order to improve performance.

       --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.  This option may be repeated.  The possible file types can be (where -tlist
              displays a detailed 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'.

       --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 `___'.

       -U, --binary
              Disables Unicode matching for binary file matching, forcing PATTERN to match  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 with a `+' separator.

       -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 query mode when 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.

       -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 instead of  -X.
              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
              Any  line  is  output  (passthru).  Non-matching lines are output as context with a `-' separator.
              See also options -A, -B and -C.

       -Z[+-~][MAX], --fuzzy=[+-~][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.  The first character of an approximate
              match always matches the start of a pattern.  Option --sort=best orders  matching  files  by  best
              match.  No whitespace may be given between -Z and its argument.

       -z, --decompress
              Decompress files to search, when compressed.  Archives (.cpio, .pax, .tar and .zip) and compressed
              archives  (e.g.  .taz,  .tgz,  .tpz,  .tbz, .tbz2, .tb2, .tz2, .tlz, .txz, .tzst) are searched and
              matching pathnames of files in archives are output in braces.  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,  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).

       --zmax=NUM
              When  used  with  option -z (--decompress), searches the contents of compressed files and archives
              stored within archives by up to NUM recursive  expansions.   The  default  --zmax=1  only  permits
              searching  uncompressed  files  stored  in  cpio,  pax, tar and zip 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 and zip 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
              Prints 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.

       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.

       The regular expression pattern syntax is an extended form of the POSIX ERE syntax.  For  an  overview  of
       the syntax see README.md or visit:

              https://github.com/Genivia/ugrep

       Note  that  `.'  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.

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 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  current  options.  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.   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=    SGR substring for selected lines.

       cx=    SGR substring for context lines.

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

       mt=    SGR substring for matching text in any matching line.

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

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

       fn=    SGR substring for filenames.

       ln=    SGR substring for line numbers.

       cn=    SGR substring for column numbers.

       bn=    SGR substring for byte offsets.

       se=    SGR substring for 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.

FORMAT

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

       %[ARG]F
              if option -H is used: ARG, 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.

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

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

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

       %n     the line number of the match.

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

       %k     the column number of the match.

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

       %b     the byte offset of the match.

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

       %t     a tab character.

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

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

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

       %,     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 %[|]>.

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

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

       %~     a newline character.

       %m     the number of matches or matched files.

       %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  [ARG]  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 both `amount' and a decimal number, ignoring case:

              $ ugrep -wi --bool '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

       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':

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

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

              $ ugrep -n FIXME myfile.cpp | ugrep -w urgent

       Find lines with `FIXME' but not the word `later':

              $ ugrep -n FIXME myfile.cpp | ugrep -v -w later

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

              $ ugrep -n FIXME myfile.cpp | ugrep -vw later |
                ugrep -P '^(\d+)' --format='%,%n'

       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 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 --bool -Z3 --sort=best

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

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

       Display all options related to "fuzzy" searching:

              $ ugrep --help fuzzy

BUGS

       Report bugs at:

              https://github.com/Genivia/ugrep/issues

LICENSE

       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.

SEE ALSO

       grep(1).

ugrep 3.7.2                                     February 07, 2022                                       UGREP(1)