Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
RG(1)				  User Commands 			   RG(1)

NAME
     rg - recursively search the current directory for lines matching a pattern

SYNOPSIS
     rg [OPTIONS] PATTERN [PATH...]

     rg [OPTIONS] -e PATTERN... [PATH...]

     rg [OPTIONS] -f PATTERNFILE... [PATH...]

     rg [OPTIONS] --files [PATH...]

     rg [OPTIONS] --type-list

     command | rg [OPTIONS] PATTERN

     rg [OPTIONS] --help

     rg [OPTIONS] --version

DESCRIPTION
     ripgrep  (rg)  recursively  searches the current directory for a regex pat-
     tern.  By default, ripgrep will respect your .gitignore  and  automatically
     skip hidden files/directories and binary files.

     ripgrep's	default  regex engine uses finite automata and guarantees linear
     time searching. Because of this, features like backreferences and arbitrary
     look-around are not supported. However, if ripgrep  is  built  with  PCRE2,
     then  the	-P/--pcre2  flag  can be used to enable backreferences and look-
     around.

     ripgrep supports configuration files. Set RIPGREP_CONFIG_PATH to a configu-
     ration file. The file can specify one shell argument per line. Lines start-
     ing with # are ignored. For more details, see CONFIGURATION FILES below.

     ripgrep will automatically detect if stdin is a readable  file  and  search
     stdin  for  a  regex pattern, e.g. ls | rg foo. In some environments, stdin
     may exist when it shouldn't. To turn off stdin detection, one  can  explic-
     itly specify the directory to search, e.g. rg foo ./.

     Like  other  tools  such  as ls, ripgrep will alter its output depending on
     whether stdout is connected to a tty. By default, when printing a tty, rip-
     grep will enable colors, line numbers and a heading format that lists  each
     matching file path once instead of once per matching line.

     Tip: to disable all smart filtering and make ripgrep behave a bit more like
     classical grep, use rg -uuu.

REGEX SYNTAX
     ripgrep  uses  Rust's  regex engine by default, which documents its syntax:
     https://docs.rs/regex/1.*/regex/#syntax

     ripgrep uses byte-oriented regexes, which has  some  additional  documenta-
     tion: https://docs.rs/regex/1.*/regex/bytes/index.html#syntax

     To  a  first  approximation,  ripgrep  uses Perl-like regexes without look-
     around or backreferences. This makes them very similar  to  the  "extended"
     (ERE)  regular  expressions supported by *egrep*, but with a few additional
     features like Unicode character classes.

     If you're using ripgrep with  the	-P/--pcre2  flag,  then  please  consult
     https://www.pcre.org  or  the PCRE2 man pages for documentation on the sup-
     ported syntax.

POSITIONAL ARGUMENTS
     PATTERN	 A regular expression used for searching. To match a pattern be-
		 ginning with a dash, use the -e/--regexp option.

     PATH	 A file or directory to search. Directories are searched  recur-
		 sively.  File	paths  specified  explicitly on the command line
		 override glob and ignore rules.

OPTIONS
     This section documents all flags that ripgrep accepts.  Flags  are  grouped
     into categories below according to their function.

     Note that many options can be turned on and off. In some cases, those flags
     are not listed explicitly below. For example, the --column flag (listed be-
     low)  enables  column numbers in ripgrep's output, but the --no-column flag
     (not listed below) disables them. The reverse can also exist. For	example,
     the --no-ignore flag (listed below) disables ripgrep's gitignore logic, but
     the --ignore flag (not listed below) enables it. These flags are useful for
     overriding  a  ripgrep  configuration  file (or alias) on the command line.
     Each flag's documentation notes whether an inverted flag  exists.	 In  all
     cases, the flag specified last takes precedence.

   INPUT OPTIONS
     -e PATTERN, --regexp=PATTERN
	 A  pattern  to  search for. This option can be provided multiple times,
	 where all patterns given are searched, in addition to any patterns pro-
	 vided by -f/--file. Lines matching at least one of  the  provided  pat-
	 terns	are printed.  This flag can also be used when searching for pat-
	 terns that start with a dash.

	 For example, to search for the literal -foo:

	     rg -e -foo

	 You can also use the special -- delimiter  to	indicate  that	no  more
	 flags	will  be  provided.  Namely,  the following is equivalent to the
	 above:

	     rg -- -foo

	 When -f/--file or -e/--regexp is used, then ripgrep  treats  all  posi-
	 tional arguments as files or directories to search.

     -f PATTERNFILE, --file=PATTERNFILE
	 Search  for  patterns	from  the given file, with one pattern per line.
	 When this flag is used  multiple  times  or  in  combination  with  the
	 -e/--regexp  flag,  then all patterns provided are searched. Empty pat-
	 tern lines will match all input lines, and the newline is  not  counted
	 as part of the pattern.

	 A  line  is  printed if and only if it matches at least one of the pat-
	 terns.

	 When PATTERNFILE is -, then stdin will be read for the patterns.

	 When -f/--file or -e/--regexp is used, then ripgrep  treats  all  posi-
	 tional arguments as files or directories to search.

     --pre=COMMAND
	 For  each  input  PATH, this flag causes ripgrep to search the standard
	 output of COMMAND PATH instead of the contents of  PATH.   This  option
	 expects  the  COMMAND program to either be a path or to be available in
	 your PATH. Either an empty string COMMAND or  the  --no-pre  flag  will
	 disable this behavior.

	 WARNING     When this flag is set, ripgrep will unconditionally spawn a
		     process  for  every  file that is searched. Therefore, this
		     can incur an unnecessarily large performance penalty if you
		     don't otherwise need the flexibility offered by this  flag.
		     One  possible  mitigation	to this is to use the --pre-glob
		     flag to limit which files a preprocessor is run with.

	 A preprocessor is not run when ripgrep is searching stdin.

	 When searching over sets of files that may require one of several  pre-
	 processors,  COMMAND should be a wrapper program which first classifies
	 PATH based on magic numbers/content or based on the PATH name and  then
	 dispatches  to  an  appropriate preprocessor. Each COMMAND also has its
	 standard input connected to PATH for convenience.

	 For example, a shell script for COMMAND might look like:

	     case "$1" in
	     *.pdf)
		 exec pdftotext "$1" -
		 ;;
	     *)
		 case $(file "$1") in
		 *Zstandard*)
		     exec pzstd -cdq
		     ;;
		 *)
		     exec cat
		     ;;
		 esac
		 ;;
	     esac

	 The above script uses pdftotext to convert a PDF file	to  plain  text.
	 For all other files, the script uses the file utility to sniff the type
	 of  the  file	based on its contents. If it is a compressed file in the
	 Zstandard format, then pzstd is used to decompress the contents to std-
	 out.

	 This overrides the -z/--search-zip flag.

     --pre-glob=GLOB
	 This flag works in conjunction with the --pre flag. Namely, when one or
	 more --pre-glob flags are given, then only files that match  the  given
	 set of globs will be handed to the command specified by the --pre flag.
	 Any  non-matching files will be searched without using the preprocessor
	 command.

	 This flag is useful when searching many  files  with  the  --pre  flag.
	 Namely,  it  provides	the  ability to avoid process overhead for files
	 that don't need preprocessing. For example, given the	following  shell
	 script, pre-pdftotext:

	     #!/bin/sh
	     pdftotext "$1" -

	 then  it  is  possible to use --pre pre-pdftotext --pre-glob '*.pdf' to
	 make it so ripgrep only executes the  pre-pdftotext  command  on  files
	 with a .pdf extension.

	 Multiple  --pre-glob  flags may be used. Globbing rules match gitignore
	 globs. Precede a glob with a ! to exclude it.

	 This flag has no effect if the --pre flag is not used.

     -z, --search-zip
	 This flag instructs ripgrep to search in  compressed  files.  Currently
	 gzip,	bzip2,	xz, LZ4, LZMA, Brotli and Zstd files are supported. This
	 option expects the decompression binaries (such as gzip) to  be  avail-
	 able in your PATH. If the required binaries are not found, then ripgrep
	 will not emit an error messages by default. Use the --debug flag to see
	 more information.

	 Note that this flag does not make ripgrep search archive formats as di-
	 rectory  trees.  It only makes ripgrep detect compressed files and then
	 decompress them before searching their contents as it would  any  other
	 file.

	 This overrides the --pre flag.

	 This flag can be disabled with --no-search-zip.

   SEARCH OPTIONS
     -s, --case-sensitive
	 Execute the search case sensitively. This is the default mode.

	 This  is a global option that applies to all patterns given to ripgrep.
	 Individual patterns can still be matched case	insensitively  by  using
	 inline  regex	flags. For example, (?i)abc will match abc case insensi-
	 tively even when this flag is used.

	 This flag overrides the -i/--ignore-case and -S/--smart-case flags.

     --crlf
	 When enabled, ripgrep will treat CRLF (\r\n) as a line  terminator  in-
	 stead of just \n.

	 Principally,  this  permits the line anchor assertions ^ and $ in regex
	 patterns to treat CRLF, CR or LF as line terminators  instead	of  just
	 LF.   Note  that  they  will never match between a CR and a LF. CRLF is
	 treated as one single line terminator.

	 When using the default regex engine, CRLF support can also  be  enabled
	 inside the pattern with the R flag. For example, (?R:$) will match just
	 before either CR or LF, but never between CR and LF.

	 This flag overrides --null-data.

	 This flag can be disabled with --no-crlf.

     --dfa-size-limit=NUM+SUFFIX?
	 The  upper  size limit of the regex DFA. The default limit is something
	 generous for any single pattern or for  many  smallish  patterns.  This
	 should  only  be  changed on very large regex inputs where the (slower)
	 fallback regex engine may otherwise be used if the limit is reached.

	 The input format accepts suffixes of K, M  or	G  which  correspond  to
	 kilobytes,  megabytes and gigabytes, respectively. If no suffix is pro-
	 vided the input is treated as bytes.

     -E ENCODING, --encoding=ENCODING
	 Specify the text encoding that ripgrep will use on all files  searched.
	 The default value is auto, which will cause ripgrep to do a best effort
	 automatic  detection  of encoding on a per-file basis. Automatic detec-
	 tion in this case only applies to files that  begin  with  a  UTF-8  or
	 UTF-16  byte-order  mark  (BOM).  No  other automatic detection is per-
	 formed. One can also specify none which will  then  completely  disable
	 BOM  sniffing and always result in searching the raw bytes, including a
	 BOM if it's present, regardless of its encoding.

	 Other supported values can  be  found	in  the  list  of  labels  here:
	 https://encoding.spec.whatwg.org/#concept-encoding-get.

	 For  more  details  on  encoding  and	how  ripgrep  deals with it, see
	 GUIDE.md.

	 The encoding detection that ripgrep uses can be reverted to  its  auto-
	 matic mode via the --no-encoding flag.

     --engine=ENGINE
	 Specify which regular expression engine to use. When you choose a regex
	 engine,  it  applies  that  choice  for every regex provided to ripgrep
	 (e.g., via multiple -e/--regexp or -f/--file flags).

	 Accepted values are default, pcre2, or auto.

	 The default value is default, which is usually the fastest  and  should
	 be  good  for most use cases. The pcre2 engine is generally useful when
	 you want to use features such as look-around  or  backreferences.  auto
	 will  dynamically  choose  between supported regex engines depending on
	 the features used in a pattern on a best effort basis.

	 Note that the pcre2 engine is an optional  ripgrep  feature.  If  PCRE2
	 wasn't included in your build of ripgrep, then using this flag will re-
	 sult in ripgrep printing an error message and exiting.

	 This  overrides previous uses of the -P/--pcre2 and --auto-hybrid-regex
	 flags.

     -F, --fixed-strings
	 Treat all patterns as literals instead of as regular expressions.  When
	 this  flag  is used, special regular expression meta characters such as
	 .(){}*+ should not need be escaped.

	 This flag can be disabled with --no-fixed-strings.

     -i, --ignore-case
	 When this flag is provided, all patterns will be searched case insensi-
	 tively.  The case insensitivity rules used by ripgrep's  default  regex
	 engine conform to Unicode's "simple" case folding rules.

	 This  is a global option that applies to all patterns given to ripgrep.
	 Individual patterns can still be matched case sensitively by using  in-
	 line regex flags. For example, (?-i)abc will match abc case sensitively
	 even when this flag is used.

	 This flag overrides -s/--case-sensitive and -S/--smart-case.

     -v, --invert-match
	 This  flag  inverts  matching.  That is, instead of printing lines that
	 match, ripgrep will print lines that don't match.

	 Note that this only inverts line-by-line matching. For example, combin-
	 ing this flag with -l/--files-with-matches will emit files that contain
	 any lines that do not match the patterns given. That's not the same as,
	 for example, --files-without-match, which will emit files that  do  not
	 contain any matching lines.

	 This flag can be disabled with --no-invert-match.

     -x, --line-regexp
	 When  enabled, ripgrep will only show matches surrounded by line bound-
	 aries.  This is equivalent to surrounding every pattern with ^  and  $.
	 In  other  words, this only prints lines where the entire line partici-
	 pates in a match.

	 This overrides the -w/--word-regexp flag.

     -m NUM, --max-count=NUM
	 Limit the number of matching lines per file searched to NUM.

	 When -U/--multiline is used, a single match that spans  multiple  lines
	 is  only  counted once for the purposes of this limit. Multiple matches
	 in a single line are counted only once, as they would be in  non-multi-
	 line mode.

	 When  combined  with  -A/--after-context or -C/--context, it's possible
	 for more matches than the maximum to be  printed  if  contextual  lines
	 contain a match.

	 Note  that  0	is a legal value but not likely to be useful. When used,
	 ripgrep won't search anything.

     --mmap
	 When enabled, ripgrep will search using memory maps when possible. This
	 is enabled by default when ripgrep thinks it will be faster.

	 Memory map searching cannot be used in all circumstances. For	example,
	 when  searching  virtual  files  or streams likes stdin. In such cases,
	 memory maps will not be used even when this flag is enabled.

	 Note that ripgrep may abort unexpectedly when memory maps are	used  if
	 it  searches a file that is simultaneously truncated. Users can opt out
	 of this possibility by disabling memory maps.

	 This flag can be disabled with --no-mmap.

     -U, --multiline
	 This flag enable searching across multiple lines.

	 When multiline mode is enabled, ripgrep will lift the restriction  that
	 a  match  cannot include a line terminator. For example, when multiline
	 mode is not enabled (the default), then the regex  \p{any}  will  match
	 any Unicode codepoint other than \n. Similarly, the regex \n is explic-
	 itly forbidden, and if you try to use it, ripgrep will return an error.
	 However, when multiline mode is enabled, \p{any} will match any Unicode
	 codepoint, including \n, and regexes like \n are permitted.

	 An  important	caveat	is that multiline mode does not change the match
	 semantics of .. Namely, in most regex matchers, a  .  will  by  default
	 match any character other than \n, and this is true in ripgrep as well.
	 In  order to make . match \n, you must enable the "dot all" flag inside
	 the regex. For example, both (?s). and (?s:.) have the same  semantics,
	 where	.  will  match	any  character, including \n. Alternatively, the
	 --multiline-dotall flag may be passed to make the  "dot  all"	behavior
	 the default. This flag only applies when multiline search is enabled.

	 There	is  no	limit on the number of the lines that a single match can
	 span.

	 WARNING: Because of how the underlying regex  engine  works,  multiline
	 searches may be slower than normal line-oriented searches, and they may
	 also  use  more  memory. In particular, when multiline mode is enabled,
	 ripgrep requires that each file it searches is laid out contiguously in
	 memory (either by reading it onto the heap or	by  memory-mapping  it).
	 Things  that  cannot  be memory-mapped (such as stdin) will be consumed
	 until EOF before searching can begin. In general, ripgrep will only  do
	 these	things when necessary.	Specifically, if the -U/--multiline flag
	 is provided but the regex does not contain patterns that would match \n
	 characters, then ripgrep will automatically  avoid  reading  each  file
	 into  memory before searching it.  Nevertheless, if you only care about
	 matches spanning at most one line, then it is always better to  disable
	 multiline mode.

	 This overrides the --stop-on-nonmatch flag.

	 This flag can be disabled with --no-multiline.

     --multiline-dotall
	 This  flag  enables "dot all" mode in all regex patterns. This causes .
	 to match line terminators when multiline  searching  is  enabled.  This
	 flag  has  no	effect	if  multiline  searching  isn't enabled with the
	 -U/--multiline flag.

	 Normally, a . will match any character except line  terminators.  While
	 this  behavior  typically  isn't  relevant  for  line-oriented matching
	 (since matches can span at most one line),  this  can	be  useful  when
	 searching with the -U/--multiline flag. By default, multiline mode runs
	 without "dot all" mode enabled.

	 This  flag is generally intended to be used in an alias or your ripgrep
	 config file if you prefer "dot all" semantics by default. Note that re-
	 gardless of whether this flag is used, "dot all" semantics can still be
	 controlled via inline flags in the regex pattern itself,  e.g.,  (?s:.)
	 always  enables  "dot	all"  whereas (?-s:.) always disables "dot all".
	 Moreover, you can use character classes like \p{any} to match any  Uni-
	 code codepoint regardless of whether "dot all" mode is enabled or not.

	 This flag can be disabled with --no-multiline-dotall.

     --no-unicode
	 This flag disables Unicode mode for all patterns given to ripgrep.

	 By  default,  ripgrep will enable "Unicode mode" in all of its regexes.
	 This has a number of consequences:

	 *  . will only match valid UTF-8 encoded Unicode scalar values.

	 *  Classes like \w, \s, \d are all Unicode aware and much  bigger  than
	    their ASCII only versions.

	 *  Case insensitive matching will use Unicode case folding.

	 *  A large array of classes like \p{Emoji} are available. (Although the
	    specific  set of classes available varies based on the regex engine.
	    In general, the default regex engine has more classes  available  to
	    it.)

	 *  Word  boundaries  (\b  and	\B) use the Unicode definition of a word
	    character.

	 In some cases it can be desirable to turn these things off.  This  flag
	 will  do  exactly  that. For example, Unicode mode can sometimes have a
	 negative impact on performance, especially when things like \w are used
	 frequently (including via bounded repetitions like \w{100})  when  only
	 their ASCII interpretation is needed.

	 This flag can be disabled with --unicode.

     --null-data
	 Enabling  this  flag causes ripgrep to use NUL as a line terminator in-
	 stead of the default of \n.

	 This is useful when searching large binary files that	would  otherwise
	 have very long lines if \n were used as the line terminator. In partic-
	 ular, ripgrep requires that, at a minimum, each line must fit into mem-
	 ory.  Using NUL instead can be a useful stopgap to keep memory require-
	 ments low and avoid OOM (out of memory) conditions.

	 This is also useful for processing NUL delimited  data,  such	as  that
	 emitted when using ripgrep's -0/--null flag or find's --print0 flag.

	 Using this flag implies -a/--text. It also overrides --crlf.

     -P, --pcre2
	 When  this flag is present, ripgrep will use the PCRE2 regex engine in-
	 stead of its default regex engine.

	 This is generally useful when you want to use features  such  as  look-
	 around or backreferences.

	 Using	this  flag  is the same as passing --engine=pcre2. Users may in-
	 stead elect to use --engine=auto to ask ripgrep to automatically select
	 the right regex engine based on the patterns given. This flag	and  the
	 --engine flag override one another.

	 Note  that  PCRE2  is	an optional ripgrep feature. If PCRE2 wasn't in-
	 cluded in your build of ripgrep, then using this flag	will  result  in
	 ripgrep  printing  an	error  message	and exiting. PCRE2 may also have
	 worse user experience in some cases, since it has  fewer  introspection
	 APIs  than ripgrep's default regex engine. For example, if you use a \n
	 in a PCRE2 regex without the -U/--multiline  flag,  then  ripgrep  will
	 silently  fail  to match anything instead of reporting an error immedi-
	 ately (like it does with the default regex engine).

	 This flag can be disabled with --no-pcre2.

     --regex-size-limit=NUM+SUFFIX?
	 The size limit of the compiled regex, where the compiled  regex  gener-
	 ally corresponds to a single object in memory that can match all of the
	 patterns provided to ripgrep. The default limit is generous enough that
	 most reasonable patterns (or even a small number of them) should fit.

	 This useful to change when you explicitly want to let ripgrep spend po-
	 tentially much more time and/or memory building a regex matcher.

	 The  input  format  accepts  suffixes	of K, M or G which correspond to
	 kilobytes, megabytes and gigabytes, respectively. If no suffix is  pro-
	 vided the input is treated as bytes.

     -S, --smart-case
	 This  flag instructs ripgrep to searches case insensitively if the pat-
	 tern is all lowercase. Otherwise, ripgrep will search case sensitively.

	 A pattern is considered all lowercase if both of  the	following  rules
	 hold:

	 *  First,  the pattern contains at least one literal character. For ex-
	    ample, a\w contains a literal (a) but just \w does not.

	 *  Second, of the literals in the pattern, none of them are  considered
	    to be uppercase according to Unicode. For example, foo\pL has no up-
	    percase literals but Foo\pL does.

	 This overrides the -s/--case-sensitive and -i/--ignore-case flags.

     --stop-on-nonmatch
	 Enabling  this option will cause ripgrep to stop reading a file once it
	 encounters a non-matching line after  it  has	encountered  a	matching
	 line.	 This  is  useful  if it is expected that all matches in a given
	 file will be on sequential lines, for example due to  the  lines  being
	 sorted.

	 This overrides the -U/--multiline flag.

     -a, --text
	 This  flag  instructs	ripgrep  to  search binary files as if they were
	 text. When this flag is present, ripgrep's  binary  file  detection  is
	 disabled.  This means that when a binary file is searched, its contents
	 may be printed if there is a match. This may cause escape codes  to  be
	 printed that alter the behavior of your terminal.

	 When  binary file detection is enabled, it is imperfect. In general, it
	 uses a simple heuristic. If a NUL byte is seen during search, then  the
	 file  is  considered  binary  and  searching stops (unless this flag is
	 present).  Alternatively, if the --binary flag is  used,  then  ripgrep
	 will  only  quit  when  it  sees  a  NUL byte after it sees a match (or
	 searches the entire file).

	 This flag overrides the --binary flag.

	 This flag can be disabled with --no-text.

     -j NUM, --threads=NUM
	 This flag sets the approximate number of threads to use. A value  of  0
	 (which  is the default) causes ripgrep to choose the thread count using
	 heuristics.

     -w, --word-regexp
	 When enabled, ripgrep will only show matches surrounded by word  bound-
	 aries.   This is equivalent to surrounding every pattern with \b{start-
	 half} and \b{end-half}.

	 This overrides the -x/--line-regexp flag.

     --auto-hybrid-regex
	 DEPRECATED. Use --engine instead.

	 When this flag is used, ripgrep will dynamically  choose  between  sup-
	 ported  regex engines depending on the features used in a pattern. When
	 ripgrep chooses a regex engine, it applies that choice for every  regex
	 provided  to  ripgrep	(e.g.,	via  multiple  -e/--regexp  or -f/--file
	 flags).

	 As an example of how this flag might behave, ripgrep  will  attempt  to
	 use its default finite automata based regex engine whenever the pattern
	 can  be  successfully	compiled with that regex engine. If PCRE2 is en-
	 abled and if the pattern given could not be compiled with  the  default
	 regex	engine,  then PCRE2 will be automatically used for searching. If
	 PCRE2 isn't available, then this flag has no effect  because  there  is
	 only one regex engine to choose from.

	 In  the  future,  ripgrep  may adjust its heuristics for how it decides
	 which regex engine to use. In general, the heuristics will  be  limited
	 to  a	static analysis of the patterns, and not to any specific runtime
	 behavior observed while searching files.

	 The primary downside of using this flag is that it may  not  always  be
	 obvious  which regex engine ripgrep uses, and thus, the match semantics
	 or performance profile of ripgrep may subtly and  unexpectedly  change.
	 However,  in  many  cases, all regex engines will agree on what consti-
	 tutes a match and it can be nice to transparently support more advanced
	 regex features like look-around and backreferences  without  explicitly
	 needing to enable them.

	 This flag can be disabled with --no-auto-hybrid-regex.

     --no-pcre2-unicode
	 DEPRECATED. Use --no-unicode instead.

	 Note that Unicode mode is enabled by default.

	 This flag can be disabled with --pcre2-unicode.

   FILTER OPTIONS
     --binary
	 Enabling  this  flag  will cause ripgrep to search binary files. By de-
	 fault, ripgrep attempts to automatically skip binary files in order  to
	 improve the relevance of results and make the search faster.

	 Binary files are heuristically detected based on whether they contain a
	 NUL byte or not. By default (without this flag set), once a NUL byte is
	 seen, ripgrep will stop searching the file. Usually, NUL bytes occur in
	 the beginning of most binary files. If a NUL byte occurs after a match,
	 then  ripgrep	will  not print the match, stop searching that file, and
	 emit a warning that some matches are being suppressed.

	 In contrast, when this flag is provided, ripgrep will continue  search-
	 ing a file even if a NUL byte is found. In particular, if a NUL byte is
	 found	then  ripgrep  will  continue  searching until either a match is
	 found or the end of the file is reached, whichever comes sooner.  If  a
	 match	is found, then ripgrep will stop and print a warning saying that
	 the search stopped prematurely.

	 If you want ripgrep to search a file without any special NUL byte  han-
	 dling	at  all  (and potentially print binary data to stdout), then you
	 should use the -a/--text flag.

	 The --binary flag is a flag for controlling ripgrep's automatic filter-
	 ing mechanism. As such, it does not need to be used  when  searching  a
	 file explicitly or when searching stdin. That is, it is only applicable
	 when recursively searching a directory.

	 When the -u/--unrestricted flag is provided for a third time, then this
	 flag is automatically enabled.

	 This flag overrides the -a/--text flag.

	 This flag can be disabled with --no-binary.

     -L, --follow
	 This  flag  instructs ripgrep to follow symbolic links while traversing
	 directories. This behavior is disabled by default.  Note  that  ripgrep
	 will  check  for symbolic link loops and report errors if it finds one.
	 ripgrep will also report errors for broken  links.  To  suppress  error
	 messages, use the --no-messages flag.

	 This flag can be disabled with --no-follow.

     -g GLOB, --glob=GLOB
	 Include  or  exclude files and directories for searching that match the
	 given glob. This always overrides any other ignore logic. Multiple glob
	 flags may be used. Globbing rules match  .gitignore  globs.  Precede  a
	 glob  with  a ! to exclude it. If multiple globs match a file or direc-
	 tory, the glob given later in the command line takes precedence.

	 As an extension, globs support specifying alternatives:  -g  'ab{c,d}*'
	 is  equivalent  to  -g abc -g abd.  Empty alternatives like -g 'ab{,c}'
	 are not currently supported. Note that this syntax  extension	is  also
	 currently  enabled  in  gitignore  files, even though this syntax isn't
	 supported by git itself. ripgrep may disable this syntax  extension  in
	 gitignore  files, but it will always remain available via the -g/--glob
	 flag.

	 When this flag is set, every file and directory is  applied  to  it  to
	 test for a match. For example, if you only want to search in a particu-
	 lar  directory  foo,  then -g foo is incorrect because foo/bar does not
	 match the glob foo. Instead, you should use -g 'foo/**'.

     --glob-case-insensitive
	 Process all glob patterns given with the -g/--glob flag  case	insensi-
	 tively.  This effectively treats -g/--glob as --iglob.

	 This flag can be disabled with --no-glob-case-insensitive.

     -., --hidden
	 Search  hidden  files and directories. By default, hidden files and di-
	 rectories are skipped. Note that if a hidden file  or	a  directory  is
	 whitelisted  in  an  ignore file, then it will be searched even if this
	 flag isn't provided.  Similarly if a hidden file or directory is  given
	 explicitly as an argument to ripgrep.

	 A file or directory is considered hidden if its base name starts with a
	 dot  character  (.). On operating systems which support a "hidden" file
	 attribute, like Windows, files with this attribute are also  considered
	 hidden.

	 Note  that -./--hidden will include files and folders like .git regard-
	 less of --no-ignore-vcs. To exclude such paths when using  -./--hidden,
	 you must explicitly ignore them using another flag or ignore file.

	 This flag can be disabled with --no-hidden.

     --iglob=GLOB
	 Include  or  exclude files and directories for searching that match the
	 given glob. This always overrides any other ignore logic. Multiple glob
	 flags may be used. Globbing rules match  .gitignore  globs.  Precede  a
	 glob  with  a ! to exclude it. If multiple globs match a file or direc-
	 tory, the glob given later in the command line takes precedence.  Globs
	 used via this flag are matched case insensitively.

     --ignore-file=PATH
	 Specifies a path to one or more gitignore formatted rules files.  These
	 patterns  are applied after the patterns found in .gitignore, .rgignore
	 and .ignore are applied and are matched relative to the current working
	 directory. That is, files specified via this flag have lower precedence
	 than files automatically found in the directory  tree.  Multiple  addi-
	 tional  ignore  files	can  be specified by using this flag repeatedly.
	 When specifying multiple ignore files, earlier files have lower  prece-
	 dence than later files.

	 If  you  are looking for a way to include or exclude files and directo-
	 ries directly on the command line, then use -g/--glob instead.

     --ignore-file-case-insensitive
	 Process ignore files (.gitignore, .ignore,  etc.)  case  insensitively.
	 Note  that  this comes with a performance penalty and is most useful on
	 case insensitive file systems (such as Windows).

	 This flag can be disabled with --no-ignore-file-case-insensitive.

     -d NUM, --max-depth=NUM
	 This flag limits the depth of directory traversal to NUM levels  beyond
	 the  paths given. A value of 0 only searches the explicitly given paths
	 themselves.

	 For example, rg --max-depth 0 dir/ is a no-op because dir/ will not  be
	 descended into. rg --max-depth 1 dir/ will search only the direct chil-
	 dren of dir.

	 An alternative spelling for this flag is --maxdepth.

     --max-filesize=NUM+SUFFIX?
	 Ignore  files	larger than NUM in size. This does not apply to directo-
	 ries.

	 The input format accepts suffixes of K, M  or	G  which  correspond  to
	 kilobytes,  megabytes and gigabytes, respectively. If no suffix is pro-
	 vided the input is treated as bytes.

	 Examples: --max-filesize 50K or --max-filesize 80M.

     --no-ignore
	 When set, ignore files such as .gitignore, .ignore and  .rgignore  will
	 not  be  respected.  This implies --no-ignore-dot, --no-ignore-exclude,
	 --no-ignore-global, --no-ignore-parent and --no-ignore-vcs.

	 This does not imply --no-ignore-files, since --ignore-file is specified
	 explicitly as a command line argument.

	 When given only once, the -u/--unrestricted flag is identical in behav-
	 ior to this flag and can be considered an  alias.  However,  subsequent
	 -u/--unrestricted flags have additional effects.

	 This flag can be disabled with --ignore.

     --no-ignore-dot
	 Don't respect filter rules from .ignore or .rgignore files.

	 This  does not impact whether ripgrep will ignore files and directories
	 whose names begin with a dot. For that, see the -./--hidden flag.  This
	 flag  also  does  not impact whether filter rules from .gitignore files
	 are respected.

	 This flag can be disabled with --ignore-dot.

     --no-ignore-exclude
	 Don't respect filter rules from files that are manually configured  for
	 the repository.  For example, this includes git's .git/info/exclude.

	 This flag can be disabled with --ignore-exclude.

     --no-ignore-files
	 When set, any --ignore-file flags, even ones that come after this flag,
	 are ignored.

	 This flag can be disabled with --ignore-files.

     --no-ignore-global
	 Don't	respect  filter  rules from ignore files that come from "global"
	 sources such as git's core.excludesFile configuration option (which de-
	 faults to $HOME/.config/git/ignore).

	 This flag can be disabled with --ignore-global.

     --no-ignore-parent
	 When this flag is set, filter rules from ignore files found  in  parent
	 directories are not respected. By default, ripgrep will ascend the par-
	 ent  directories  of  the current working directory to look for any ap-
	 plicable ignore files that should be applied. In some	cases  this  may
	 not be desirable.

	 This flag can be disabled with --ignore-parent.

     --no-ignore-vcs
	 When  given, filter rules from source control ignore files (e.g., .git-
	 ignore) are not respected. By default, ripgrep  respects  git's  ignore
	 rules	for  automatic filtering. In some cases, it may not be desirable
	 to respect the source control's ignore rules and instead  only  respect
	 rules in .ignore or .rgignore.

	 Note  that  this  flag does not directly affect the filtering of source
	 control files or folders that start with a dot (.),  like  .git.  These
	 are affected by -./--hidden and its related flags instead.

	 This flag implies --no-ignore-parent for source control ignore files as
	 well.

	 This flag can be disabled with --ignore-vcs.

     --no-require-git
	 When this flag is given, source control ignore files such as .gitignore
	 are respected even if no git repository is present.

	 By  default, ripgrep will only respect filter rules from source control
	 ignore files when ripgrep detects that the search is executed inside  a
	 source  control  repository.  For example, when a .git directory is ob-
	 served.

	 This flag relaxes the default restriction. For  example,  it  might  be
	 useful when the contents of a git repository are stored or copied some-
	 where, but where the repository state is absent.

	 This flag can be disabled with --require-git.

     --one-file-system
	 When enabled, ripgrep will not cross file system boundaries relative to
	 where the search started from.

	 Note  that this applies to each path argument given to ripgrep. For ex-
	 ample, in the command

	     rg --one-file-system /foo/bar /quux/baz

	 ripgrep will search both /foo/bar and /quux/baz even  if  they  are  on
	 different  file systems, but will not cross a file system boundary when
	 traversing each path's directory tree.

	 This is similar to find's -xdev or -mount flag.

	 This flag can be disabled with --no-one-file-system.

     -t TYPE, --type=TYPE
	 This flag limits ripgrep to searching	files  matching  TYPE.	Multiple
	 -t/--type flags may be provided.

	 This  flag  supports  the  special  value  all, which will behave as if
	 -t/--type was provided for every file type supported  by  ripgrep  (in-
	 cluding  any  custom  file  types).  The  end result is that --type=all
	 causes ripgrep to search in "whitelist" mode, where it will only search
	 files it recognizes via its type definitions.

	 Note that this flag has lower precedence than both the  -g/--glob  flag
	 and any rules found in ignore files.

	 To see the list of available file types, use the --type-list flag.

     -T TYPE, --type-not=TYPE
	 Do  not search files matching TYPE. Multiple -T/--type-not flags may be
	 provided. Use the --type-list flag to list all available types.

	 This flag supports the special value  all,  which  will  behave  as  if
	 -T/--type-not	was  provided  for  every file type supported by ripgrep
	 (including  any  custom  file	types).   The	end   result   is   that
	 --type-not=all  causes  ripgrep to search in "blacklist" mode, where it
	 will only search files that are unrecognized by its type definitions.

	 To see the list of available file types, use the --type-list flag.

     --type-add=TYPESPEC
	 This flag adds a new glob for a particular file type. Only one glob can
	 be added at a time. Multiple --type-add flags can be  provided.  Unless
	 --type-clear is used, globs are added to any existing globs defined in-
	 side of ripgrep.

	 Note that this must be passed to every invocation of ripgrep. Type set-
	 tings are not persisted. See CONFIGURATION FILES for a workaround.

	 Example:

	     rg --type-add 'foo:*.foo' -tfoo PATTERN

	 This  flag  can also be used to include rules from other types with the
	 special include directive. The include directive permits specifying one
	 or more other type names (separated by a comma) that have been  defined
	 and  its  rules will automatically be imported into the type specified.
	 For example, to create a type called src that matches C++,  Python  and
	 Markdown files, one can use:

	     --type-add 'src:include:cpp,py,md'

	 Additional  glob rules can still be added to the src type by using this
	 flag again:

	     --type-add 'src:include:cpp,py,md' --type-add 'src:*.foo'

	 Note that type names must consist only of Unicode letters  or	numbers.
	 Punctuation characters are not allowed.

     --type-clear=TYPE
	 Clear	the file type globs previously defined for TYPE. This clears any
	 previously defined globs for the TYPE, but globs  can	be  added  after
	 this flag.

	 Note that this must be passed to every invocation of ripgrep. Type set-
	 tings are not persisted. See CONFIGURATION FILES for a workaround.

     -u, --unrestricted
	 This  flag reduces the level of "smart" filtering. Repeated uses (up to
	 3) reduces the filtering even more. When repeated three times,  ripgrep
	 will search every file in a directory tree.

	 A  single  -u/--unrestricted  flag  is  equivalent  to --no-ignore. Two
	 -u/--unrestricted  flags  is  equivalent  to  --no-ignore  -./--hidden.
	 Three	-u/--unrestricted flags is equivalent to --no-ignore -./--hidden
	 --binary.

	 The only filtering ripgrep still does when -uuu is  given  is	to  skip
	 symbolic  links  and  to avoid printing matches from binary files. Sym-
	 bolic links can be followed via the -L/--follow flag, and binary  files
	 can be treated as text files via the -a/--text flag.

   OUTPUT OPTIONS
     -A NUM, --after-context=NUM
	 Show NUM lines after each match.

	 This	overrides  the	--passthru  flag  and  partially  overrides  the
	 -C/--context flag.

     -B NUM, --before-context=NUM
	 Show NUM lines before each match.

	 This  overrides  the  --passthru  flag  and  partially  overrides   the
	 -C/--context flag.

     --block-buffered
	 When  enabled,  ripgrep  will	use block buffering. That is, whenever a
	 matching line is found, it will be written to an in-memory  buffer  and
	 will  not be written to stdout until the buffer reaches a certain size.
	 This is the default when ripgrep's stdout is redirected to  a	pipeline
	 or  a file. When ripgrep's stdout is connected to a tty, line buffering
	 will be used by default. Forcing block buffering  can	be  useful  when
	 dumping a large amount of contents to a tty.

	 This overrides the --line-buffered flag.

	 This flag can be disabled with --no-block-buffered.

     -b, --byte-offset
	 Print the 0-based byte offset within the input file before each line of
	 output.   If  -o/--only-matching  is specified, print the offset of the
	 matched text itself.

	 If ripgrep does transcoding, then the byte offset is in  terms  of  the
	 result of transcoding and not the original data. This applies similarly
	 to  other transformations on the data, such as decompression or a --pre
	 filter.

	 This flag can be disabled with --no-byte-offset.

     --color=WHEN
	 This flag controls when to use colors. The  default  setting  is  auto,
	 which	means ripgrep will try to guess when to use colors. For example,
	 if ripgrep is printing to a tty, then it will use colors, but if it  is
	 redirected to a file or a pipe, then it will suppress color output.

	 ripgrep  will	suppress  color  output by default in some other circum-
	 stances as well. These include, but are not limited to:

	 *  When the TERM environment variable is not set or set to dumb.

	 *  When the NO_COLOR environment variable is set (regardless of value).

	 *  When flags that imply no use for  colors  are  given.  For	example,
	    --vimgrep and --json.

	 The possible values for this flag are:

	 never	   Colors will never be used.

	 auto	   The default. ripgrep tries to be smart.

	 always    Colors  will  always  be  used  regardless of where output is
		   sent.

	 ansi	   Like 'always', but emits ANSI escapes (even in a Windows con-
		   sole).

	 This flag also controls whether hyperlinks are  emitted.  For	example,
	 when  a  hyperlink  format  is specified, hyperlinks won't be used when
	 color is suppressed. If one wants to emit  hyperlinks	but  no  colors,
	 then one must use the --colors flag to manually set all color styles to
	 none:

	     --colors 'path:none' \
	     --colors 'line:none' \
	     --colors 'column:none' \
	     --colors 'match:none' \
	     --colors 'highlight:none'

     --colors=COLOR_SPEC
	 This flag specifies color settings for use in the output. This flag may
	 be  provided  multiple times. Settings are applied iteratively. Pre-ex-
	 isting color labels are limited to one of  eight  choices:  red,  blue,
	 green,  cyan,	magenta,  yellow, white and black. Styles are limited to
	 nobold, bold, nointense, intense, nounderline, underline,  noitalic  or
	 italic.

	 The  format  of the flag is {type}:{attribute}:{value}.  type should be
	 one of path, line, column, highlight or match. attribute can be fg,  bg
	 or  style.  value  is either a color (for fg and bg) or a text style. A
	 special format, {type}:none, will clear all color settings for type.

	 For example, the following command will change the match color  to  ma-
	 genta and the background color for line numbers to yellow:

	     rg --colors 'match:fg:magenta' --colors 'line:bg:yellow'

	 Another  example, the following command will "highlight" the non-match-
	 ing text in matching lines:

	     rg --colors 'highlight:bg:yellow' --colors 'highlight:fg:black'

	 The "highlight" color	type  is  particularly	useful	for  contrasting
	 matching lines with surrounding context printed by the -B/--before-con-
	 text, -A/--after-context, -C/--context or --passthru flags.

	 Extended  colors can be used for value when the tty supports ANSI color
	 sequences. These are specified as either x (256-color) or x,x,x (24-bit
	 truecolor) where x is a number between 0 and 255 inclusive.  x  may  be
	 given as a normal decimal number or a hexadecimal number, which is pre-
	 fixed by 0x.

	 For  example,	the  following	command will change the match background
	 color to that represented by the rgb value (0,128,255):

	     rg --colors 'match:bg:0,128,255'

	 or, equivalently,

	     rg --colors 'match:bg:0x0,0x80,0xFF'

	 Note that the intense and nointense styles will  have	no  effect  when
	 used alongside these extended color codes.

     --column
	 Show  column  numbers (1-based). This only shows the column numbers for
	 the first match on each line. This does not try to account for Unicode.
	 One byte is equal to one column. This implies -n/--line-number.

	 When -o/--only-matching is used, then the column numbers written corre-
	 spond to the start of each match.

	 This flag can be disabled with --no-column.

     -C NUM, --context=NUM
	 Show NUM lines before and after each match. This is equivalent to  pro-
	 viding  both  the -B/--before-context and -A/--after-context flags with
	 the same value.

	 This overrides the --passthru flag. The -A/--after-context and -B/--be-
	 fore-context flags both partially override this flag, regardless of the
	 order. For example, -A2 -C1 is equivalent to -A2 -B1.

     --context-separator=SEPARATOR
	 The string used to separate non-contiguous context lines in the output.
	 This is only used when one of the  context  flags  is	used  (that  is,
	 -A/--after-context,  -B/--before-context  or  -C/--context). Escape se-
	 quences like \x7F or \t may be used. The default value is --.

	 When the context separator is set to an empty string, then a line break
	 is still inserted. To completely disable context  separators,	use  the
	 --no-context-separator flag.

     --field-context-separator=SEPARATOR
	 Set  the  field  context  separator.  This  separator is only used when
	 printing contextual lines. It is used to delimit file paths, line  num-
	 bers,	columns and the contextual line itself. The separator may be any
	 number of bytes, including zero. Escape sequences like \x7F or  \t  may
	 be used.

	 The - character is the default value.

     --field-match-separator=SEPARATOR
	 Set  the field match separator. This separator is only used when print-
	 ing matching lines. It is used to delimit  file  paths,  line	numbers,
	 columns  and  the matching line itself. The separator may be any number
	 of bytes, including zero.  Escape sequences like  \x7F  or  \t  may  be
	 used.

	 The : character is the default value.

     --heading
	 This flag prints the file path above clusters of matches from each file
	 instead of printing the file path as a prefix for each matched line.

	 This is the default mode when printing to a tty.

	 When  stdout  is  not	a tty, then ripgrep will default to the standard
	 grep-like format. One can force this format in  Unix-like  environments
	 by piping the output of ripgrep to cat. For example, rg foo | cat.

	 This flag can be disabled with --no-heading.

     -h, --help
	 This flag prints the help output for ripgrep.

	 Unlike  most  other  flags, the behavior of the short flag, -h, and the
	 long flag, --help, is different. The short flag will show  a  condensed
	 help  output  while  the long flag will show a verbose help output. The
	 verbose help output has complete documentation, where as the  condensed
	 help output will show only a single line for every flag.

     --hostname-bin=COMMAND
	 This  flag  controls how ripgrep determines this system's hostname. The
	 flag's value should correspond to an executable (either a path or some-
	 thing that can be found via your system's PATH  environment  variable).
	 When  set,  ripgrep  will  run  this executable, with no arguments, and
	 treat its output (with leading and  trailing  whitespace  stripped)  as
	 your system's hostname.

	 When  not  set  (the default, or the empty string), ripgrep will try to
	 automatically detect your system's hostname. On Unix, this  corresponds
	 to calling gethostname. On Windows, this corresponds to calling GetCom-
	 puterNameExW to fetch the system's "physical DNS hostname."

	 ripgrep uses your system's hostname for producing hyperlinks.

     --hyperlink-format=FORMAT
	 Set  the  format of hyperlinks to use when printing results. Hyperlinks
	 make certain elements of ripgrep's output, such as file  paths,  click-
	 able.	This  generally  only  works  in terminal emulators that support
	 OSC-8 hyperlinks. For example, the format file://{host}{path} will emit
	 an RFC 8089 hyperlink.  To see the format that ripgrep is  using,  pass
	 the --debug flag.

	 Alternatively,  a  format string may correspond to one of the following
	 aliases: default, none, cursor, file, grep+, kitty,  macvim,  textmate,
	 vscode,  vscode-insiders,  vscodium.  The alias will be replaced with a
	 format string that is intended to work for the  corresponding	applica-
	 tion.

	 The following variables are available in the format string:

	 {path}      Required.	This is replaced with a path to a matching file.
		     The path is guaranteed to be absolute and	percent  encoded
		     such  that  it is valid to put into a URI. Note that a path
		     is guaranteed to start with a /.

	 {host}      Optional. This is replaced with your system's hostname.  On
		     Unix,  this corresponds to calling gethostname. On Windows,
		     this corresponds to calling GetComputerNameExW to fetch the
		     system's "physical DNS hostname." Alternatively, if --host-
		     name-bin was provided, then the hostname returned from  the
		     output  of  that  program	will be returned. If no hostname
		     could be found, then this variable  is  replaced  with  the
		     empty string.

	 {line}      Optional.	If  appropriate,  this is replaced with the line
		     number of a match. If no line number is available (for  ex-
		     ample, if --no-line-number was given), then it is automati-
		     cally replaced with the value 1.

	 {column}    Optional, but requires the presence of {line}. If appropri-
		     ate, this is replaced with the column number of a match. If
		     no  column number is available (for example, if --no-column
		     was given), then it  is  automatically  replaced  with  the
		     value 1.

	 {wslprefix}
		     Optional.	 This	is  a  special	value  that  is  set  to
		     wsl$/WSL_DISTRO_NAME, where WSL_DISTRO_NAME corresponds  to
		     the  value  of  the equivalent environment variable. If the
		     system is not Unix or if  the  WSL_DISTRO_NAME  environment
		     variable  is  not set, then this is replaced with the empty
		     string.

	 A format string may be empty. An empty format string is  equivalent  to
	 the none alias. In this case, hyperlinks will be disabled.

	 At  present,  ripgrep does not enable hyperlinks by default. Users must
	 opt into them. If you aren't sure what format to use, try default.

	 Like colors, when ripgrep detects that stdout is  not	connected  to  a
	 tty,  then  hyperlinks  are  automatically  disabled, regardless of the
	 value of this flag.  Users can pass --color=always to	forcefully  emit
	 hyperlinks.

	 Note that hyperlinks are only written when a path is also in the output
	 and colors are enabled. To write hyperlinks without colors, you'll need
	 to  configure	ripgrep  to  not colorize anything without actually dis-
	 abling all ANSI escape codes completely:

	     --colors 'path:none' \
	     --colors 'line:none' \
	     --colors 'column:none' \
	     --colors 'match:none'

	 ripgrep works this way because it treats the --color flag  as	a  proxy
	 for  whether  ANSI  escape codes should be used at all. This means that
	 environment variables like NO_COLOR=1 and TERM=dumb  not  only  disable
	 colors,  but  hyperlinks  as well. Similarly, colors and hyperlinks are
	 disabled when ripgrep is not writing to a tty. (Unless one  forces  the
	 issue by setting --color=always.)

	 If you're searching a file directly, for example:

	     rg foo path/to/file

	 then  hyperlinks  will not be emitted since the path given does not ap-
	 pear in the output. To make the path appear, and thus also a hyperlink,
	 use the -H/--with-filename flag.

	 For  more  information  on  hyperlinks  in  terminal  emulators,   see:
	 https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda

     --include-zero
	 When  used  with  -c/--count or --count-matches, this causes ripgrep to
	 print the number of matches for each  file  even  if  there  were  zero
	 matches. This is disabled by default but can be enabled to make ripgrep
	 behave more like grep.

	 This flag can be disabled with --no-include-zero.

     --line-buffered
	 When enabled, ripgrep will always use line buffering. That is, whenever
	 a  matching  line  is	found, it will be flushed to stdout immediately.
	 This is the default when ripgrep's stdout is connected to  a  tty,  but
	 otherwise, ripgrep will use block buffering, which is typically faster.
	 This  flag forces ripgrep to use line buffering even if it would other-
	 wise use block buffering. This is typically useful in shell  pipelines,
	 for example:

	     tail -f something.log | rg foo --line-buffered | rg bar

	 This overrides the --block-buffered flag.

	 This flag can be disabled with --no-line-buffered.

     -n, --line-number
	 Show line numbers (1-based).

	 This is enabled by default when stdout is connected to a tty.

	 This flag can be disabled by -N/--no-line-number.

     -N, --no-line-number
	 Suppress line numbers.

	 Line numbers are off by default when stdout is not connected to a tty.

	 Line numbers can be forcefully turned on by -n/--line-number.

     -M NUM, --max-columns=NUM
	 When  given,  ripgrep	will omit lines longer than this limit in bytes.
	 Instead of printing long lines, only the number of matches in that line
	 is printed.

	 When this flag is omitted or is set to 0, then it has no effect.

     --max-columns-preview
	 Prints a preview for lines exceeding the configured max column limit.

	 When the -M/--max-columns flag is used, ripgrep will  by  default  com-
	 pletely  replace  any	line  that is too long with a message indicating
	 that a matching line was removed.  When  this	flag  is  combined  with
	 -M/--max-columns,  a  preview	of  the line (corresponding to the limit
	 size) is shown instead, where the part of the line exceeding the  limit
	 is not shown.

	 If the -M/--max-columns flag is not set, then this has no effect.

	 This flag can be disabled with --no-max-columns-preview.

     -0, --null
	 Whenever  a  file  path is printed, follow it with a NUL byte. This in-
	 cludes printing file paths before matches, and when printing a list  of
	 matching  files  such	as  with -c/--count, -l/--files-with-matches and
	 --files. This option is useful for use with xargs.

     -o, --only-matching
	 Print only the matched (non-empty) parts of a matching line, with  each
	 such part on a separate output line.

     --path-separator=SEPARATOR
	 Set  the  path separator to use when printing file paths. This defaults
	 to your platform's path separator, which is / on Unix and \ on Windows.
	 This flag is intended for overriding the default when	the  environment
	 demands  it  (e.g.,  cygwin).	A  path separator is limited to a single
	 byte.

	 Setting this flag to an empty string reverts it to its  default  behav-
	 ior.  That  is, the path separator is automatically chosen based on the
	 environment.

     --passthru
	 Print both matching and non-matching lines.

	 Another way to achieve a similar effect is by modifying your pattern to
	 match the empty string. For example, if you are searching using rg foo,
	 then using rg '^|foo' instead	will  emit  every  line  in  every  file
	 searched,  but  only occurrences of foo will be highlighted.  This flag
	 enables the same behavior without needing to modify the pattern.

	 An alternative spelling for this flag is --passthrough.

	 This  overrides  the  -C/--context,  -A/--after-context  and	-B/--be-
	 fore-context flags.

     -p, --pretty
	 This is a convenience alias for --color=always --heading --line-number.
	 This  flag  is  useful when you still want pretty output even if you're
	 piping ripgrep to another program or file. For example:  rg  -p  foo  |
	 less -R.

     -q, --quiet
	 Do  not  print  anything to stdout. If a match is found in a file, then
	 ripgrep will stop searching. This is useful when ripgrep is  used  only
	 for  its  exit  code  (which  will  be  an error code if no matches are
	 found).

	 When --files is used, ripgrep will stop finding files after finding the
	 first file that does not match any ignore rules.

     -r REPLACEMENT, --replace=REPLACEMENT
	 Replaces every match with the text given when printing results. Neither
	 this flag nor any other ripgrep flag will modify your files.

	 Capture group indices (e.g., $5) and names (e.g., $foo)  are  supported
	 in  the replacement string. Capture group indices are numbered based on
	 the position of the opening parenthesis of the group, where  the  left-
	 most  such  group is $1. The special $0 group corresponds to the entire
	 match.

	 The name of a group is formed by taking the longest string of	letters,
	 numbers  and  underscores (i.e. [_0-9A-Za-z]) after the $. For example,
	 $1a will be replaced with the group named 1a, not the group at index 1.
	 If the group's name contains characters that aren't letters, numbers or
	 underscores, or you want to immediately follow the group  with  another
	 string,  the  name should be put inside braces. For example, ${1}a will
	 take the content of the group at index 1 and append a to the end of it.

	 If an index or name does not refer to a valid capture group, it will be
	 replaced with an empty string.

	 In shells such as Bash and zsh, you should wrap the pattern  in  single
	 quotes  instead of double quotes. Otherwise, capture group indices will
	 be replaced by expanded shell	variables  which  will	most  likely  be
	 empty.

	 To write a literal $, use $$.

	 Note  that  the replacement by default replaces each match, and not the
	 entire line. To replace the entire line, you should  match  the  entire
	 line.

	 This flag can be used with the -o/--only-matching flag.

     --sort=SORTBY
	 This  flag  enables sorting of results in ascending order. The possible
	 values for this flag are:

	 none	     (Default) Do not  sort  results.  Fastest.  Can  be  multi-
		     threaded.

	 path	     Sort by file path. Always single-threaded. The order is de-
		     termined  by  sorting  files in each directory entry during
		     traversal. This means that given the files a/b and a+,  the
		     latter  will sort after the former even though + would nor-
		     mally sort before /.

	 modified    Sort by the last modified time on a  file.  Always  single-
		     threaded.

	 accessed    Sort  by  the  last accessed time on a file. Always single-
		     threaded.

	 created     Sort by  the  creation  time  on  a  file.  Always  single-
		     threaded.

	 If the chosen (manually or by-default) sorting criteria isn't available
	 on  your  system  (for  example, creation time is not available on ext4
	 file systems), then ripgrep will attempt to detect this, print an error
	 and exit without searching.

	 To sort results in reverse or descending order, use the  --sortr  flag.
	 Also, this flag overrides --sortr.

	 Note  that  sorting  results currently always forces ripgrep to abandon
	 parallelism and run in a single thread.

     --sortr=SORTBY
	 This flag enables sorting of results in descending order. The	possible
	 values for this flag are:

	 none	     (Default)	Do  not  sort  results.  Fastest.  Can be multi-
		     threaded.

	 path	     Sort by file path. Always single-threaded. The order is de-
		     termined by sorting files in each	directory  entry  during
		     traversal.  This means that given the files a/b and a+, the
		     latter will sort before the former even though + would nor-
		     mally sort after / when doing a reverse lexicographic sort.

	 modified    Sort by the last modified time on a  file.  Always  single-
		     threaded.

	 accessed    Sort  by  the  last accessed time on a file. Always single-
		     threaded.

	 created     Sort by  the  creation  time  on  a  file.  Always  single-
		     threaded.

	 If the chosen (manually or by-default) sorting criteria isn't available
	 on  your  system  (for  example, creation time is not available on ext4
	 file systems), then ripgrep will attempt to detect this, print an error
	 and exit without searching.

	 To sort results in ascending order, use the  --sort  flag.  Also,  this
	 flag overrides --sort.

	 Note  that  sorting  results currently always forces ripgrep to abandon
	 parallelism and run in a single thread.

     --trim
	 When set, all ASCII whitespace at the beginning of  each  line  printed
	 will be removed.

	 This flag can be disabled with --no-trim.

     --vimgrep
	 This  flag  instructs	ripgrep to print results with every match on its
	 own line, including line numbers and column numbers.

	 With this option, a line with more than one match will  be  printed  in
	 its  entirety more than once. For that reason, the total amount of out-
	 put as a result of this flag can be quadratic in the size of the input.
	 For example, if the pattern matches every byte in an input  file,  then
	 each  line  will  be  repeated for every byte matched. For this reason,
	 users should only use this flag when there is no other  choice.  Editor
	 integrations  should prefer some other way of reading results from rip-
	 grep, such as via the --json flag.  One alternative to avoiding exorbi-
	 tant memory usage is to force ripgrep into single  threaded  mode  with
	 the  -j/--threads flag. Note though that this will not impact the total
	 size of the output, just the heap memory that ripgrep will use.

     -H, --with-filename
	 This flag instructs ripgrep to print the file path  for  each	matching
	 line.	 This  is  the	default  when more than one file is searched. If
	 --heading is enabled (the default when printing to  a	tty),  the  file
	 path will be shown above clusters of matches from each file; otherwise,
	 the file name will be shown as a prefix for each matched line.

	 This flag overrides -I/--no-filename.

     -I, --no-filename
	 This  flag  instructs	ripgrep  to  never print the file path with each
	 matching line. This is the  default  when  ripgrep  is  explicitly  in-
	 structed to search one file or stdin.

	 This flag overrides -H/--with-filename.

     --sort-files
	 DEPRECATED. Use --sort=path instead.

	 This flag instructs ripgrep to sort search results by file path lexico-
	 graphically  in  ascending order. Note that this currently disables all
	 parallelism and runs search in a single thread.

	 This flag overrides --sort and --sortr.

	 This flag can be disabled with --no-sort-files.

   OUTPUT MODES
     -c, --count
	 This flag suppresses normal output and shows the number of  lines  that
	 match the given patterns for each file searched. Each file containing a
	 match	has  its  path	and count printed on each line. Note that unless
	 -U/--multiline is enabled and the pattern(s) given can match over  mul-
	 tiple	lines,	this  reports the number of lines that match and not the
	 total number of matches. When multiline mode is enabled  and  the  pat-
	 tern(s)  given  can match over multiple lines, -c/--count is equivalent
	 to --count-matches.

	 If only one file is given to ripgrep, then only the count is printed if
	 there is a match. The -H/--with-filename flag	can  be  used  to  force
	 printing  the file path in this case. If you need a count to be printed
	 regardless of whether there is a match, then use --include-zero.

	 Note that it is possible for this flag  to  have  results  inconsistent
	 with  the  output of -l/--files-with-matches. Notably, by default, rip-
	 grep tries to avoid searching files with binary data. With  this  flag,
	 ripgrep  needs to search the entire content of files, which may include
	 binary data. But with -l/--files-with-matches, ripgrep can stop as soon
	 as a match is observed, which may come well before any binary data.  To
	 avoid	this  inconsistency  without disabling binary detection, use the
	 --binary flag.

	 This overrides the --count-matches flag. Note that when  -c/--count  is
	 combined   with   -o/--only-matching,	 then	ripgrep  behaves  as  if
	 --count-matches was given.

     --count-matches
	 This flag suppresses normal output and shows the number  of  individual
	 matches  of  the  given patterns for each file searched. Each file con-
	 taining matches has its path and match count printed on each line. Note
	 that this reports the total number of individual matches  and	not  the
	 number of lines that match.

	 If only one file is given to ripgrep, then only the count is printed if
	 there	is  a  match.  The  -H/--with-filename flag can be used to force
	 printing the file path in this case.

	 This overrides the -c/--count flag. Note that when -c/--count	is  com-
	 bined	 with	-o/--only-matching,   then   ripgrep   behaves	 as   if
	 --count-matches was given.

     -l, --files-with-matches
	 Print only the paths with at least one match and  suppress  match  con-
	 tents.

	 Note  that  it  is  possible for this flag to have results inconsistent
	 with the output of -c/--count. Notably, by default,  ripgrep  tries  to
	 avoid	searching  files with binary data. With this flag, ripgrep might
	 stop searching before the binary data is observed. But with -c/--count,
	 ripgrep has to search the entire contents to determine the match count,
	 which means it might see binary data that causes it to  skip  searching
	 that  file. To avoid this inconsistency without disabling binary detec-
	 tion, use the --binary flag.

	 This overrides --files-without-match.

     --files-without-match
	 Print the paths that contain zero matches and suppress match contents.

	 This overrides -l/--files-with-matches.

     --json
	 Enable printing results in a JSON Lines format.

	 When this flag is provided, ripgrep will emit a sequence  of  messages,
	 each  encoded	as a JSON object, where there are five different message
	 types:

	 begin	     A message that indicates a file is being searched and  con-
		     tains at least one match.

	 end	     A message the indicates a file is done being searched. This
		     message  also  include  summary statistics about the search
		     for a particular file.

	 match	     A message that indicates a match was found.  This	includes
		     the text and offsets of the match.

	 context     A	message that indicates a contextual line was found. This
		     includes the text of the line, along with any match  infor-
		     mation if the search was inverted.

	 summary     The  final message emitted by ripgrep that contains summary
		     statistics about the search across all files.

	 Since file paths or the contents of files  are  not  guaranteed  to  be
	 valid	UTF-8  and JSON itself must be representable by a Unicode encod-
	 ing, ripgrep will emit all data elements as objects  with  one  of  two
	 keys:	text  or  bytes.  text	is a normal JSON string when the data is
	 valid UTF-8 while bytes is the base64 encoded contents of the data.

	 The JSON Lines format is only supported for showing search results.  It
	 cannot  be  used with other flags that emit other types of output, such
	 as --files, -l/--files-with-matches, --files-without-match,  -c/--count
	 or  --count-matches.  ripgrep will report an error if any of the afore-
	 mentioned flags are used in concert with --json.

	 Other flags that  control  aspects  of  the  standard	output	such  as
	 -o/--only-matching,  --heading,  -r/--replace,  -M/--max-columns, etc.,
	 have no effect when --json is set. However, enabling JSON  output  will
	 always implicitly and unconditionally enable --stats.

	 A  more complete description of the JSON format used can be found here:
	 https://docs.rs/grep-printer/*/grep_printer/struct.JSON.html.

	 This flag can be disabled with --no-json.

   LOGGING OPTIONS
     --debug
	 Show debug messages. Please use this when filing a bug report.

	 The --debug flag is generally	useful	for  figuring  out  why  ripgrep
	 skipped  searching a particular file. The debug messages should mention
	 all files skipped and why they were skipped.

	 To get even more debug output, use  the  --trace  flag,  which  implies
	 --debug along with additional trace data.

     --no-ignore-messages
	 When this flag is enabled, all error messages related to parsing ignore
	 files are suppressed. By default, error messages are printed to stderr.
	 In  cases  where  these  errors  are expected, this flag can be used to
	 avoid seeing the noise produced by the messages.

	 This flag can be disabled with --ignore-messages.

     --no-messages
	 This flag suppresses some error messages.  Specifically,  messages  re-
	 lated	to  the  failed opening and reading of files. Error messages re-
	 lated to the syntax of the pattern are still shown.

	 This flag can be disabled with --messages.

     --stats
	 When enabled, ripgrep will print aggregate statistics about the search.
	 When this flag is present, ripgrep will print at  least  the  following
	 stats to stdout at the end of the search: number of matched lines, num-
	 ber of files with matches, number of files searched, and the time taken
	 for the entire search to complete.

	 This set of aggregate statistics may expand over time.

	 This flag is always and implicitly enabled when --json is used.

	 Note  that  this flag has no effect if --files, -l/--files-with-matches
	 or --files-without-match is passed.

	 This flag can be disabled with --no-stats.

     --trace
	 Show trace messages. This shows even more detail than the --debug flag.
	 Generally, one should only use this if --debug doesn't emit the  infor-
	 mation you're looking for.

   OTHER BEHAVIORS
     --files
	 Print	each file that would be searched without actually performing the
	 search.  This is useful to determine whether a particular file is being
	 searched or not.

	 This overrides --type-list.

     --generate=KIND
	 This flag instructs ripgrep to generate some  special	kind  of  output
	 identified  by KIND and then quit without searching. KIND can be one of
	 the following values:

	 man		Generates a manual page for ripgrep in the roff format.

	 complete-bash	Generates a completion script for the bash shell.

	 complete-zsh	Generates a completion script for the zsh shell.

	 complete-fish	Generates a completion script for the fish shell.

	 complete-powershell
			Generates a completion script for PowerShell.

	 The output is written to stdout. The list above may expand over time.

     --no-config
	 When set, ripgrep will never read configuration files. When  this  flag
	 is  present,  ripgrep will not respect the RIPGREP_CONFIG_PATH environ-
	 ment variable.

	 If ripgrep ever grows a feature  to  automatically  read  configuration
	 files	in  pre-defined locations, then this flag will also disable that
	 behavior as well.

     --pcre2-version
	 When this flag is present, ripgrep will print the version of  PCRE2  in
	 use,  along  with  other  information,  and  then exit. If PCRE2 is not
	 available, then ripgrep will print an error message and  exit	with  an
	 error code.

     --type-list
	 Show all supported file types and their corresponding globs. This takes
	 any  --type-add and --type-clear flags given into account. Each type is
	 printed on its own line, followed by a :  and	then  a  comma-delimited
	 list of globs for that type on the same line.

     -V, --version
	 This  flag prints ripgrep's version. This also may print other relevant
	 information, such as the presence of target specific optimizations  and
	 the git revision that this build of ripgrep was compiled from.

EXIT STATUS
     If  ripgrep finds a match, then the exit status of the program is 0.  If no
     match could be found, then the exit status is 1. If an error occurred, then
     the exit status is always 2 unless ripgrep was run with the -q/--quiet flag
     and a match was found. In summary:

     *	0 exit status occurs only when at least one match was found, and  if  no
	error occurred, unless -q/--quiet was given.

     *	1 exit status occurs only when no match was found and no error occurred.

     *	2 exit status occurs when an error occurred. This is true for both cata-
	strophic  errors (e.g., a regex syntax error) and for soft errors (e.g.,
	unable to read a file).

AUTOMATIC FILTERING
     ripgrep does a fair bit of automatic filtering by default. This section de-
     scribes that filtering and how to control it.

     TIP: To disable automatic filtering, use rg -uuu.

     ripgrep's automatic "smart" filtering is one of the most apparent differen-
     tiating features between ripgrep and other tools like grep.  As  such,  its
     behavior may be surprising to users that aren't expecting it.

     ripgrep does four types of filtering automatically:

     1. Files and directories that match ignore rules are not searched.

     2. Hidden files and directories are not searched.

     3. Binary files (files with a NUL byte) are not searched.

     4. Symbolic links are not followed.

     The first type of filtering is the most sophisticated. ripgrep will attempt
     to  respect  your gitignore rules as faithfully as possible. In particular,
     this includes the following:

     *	Any global rules, e.g., in $HOME/.config/git/ignore.

     *	Any rules in relevant .gitignore files. This includes  .gitignore  files
	in parent directories that are part of the same git repository.  (Unless
	--no-require-git is given.)

     *	Any local rules, e.g., in .git/info/exclude.

     In some cases, ripgrep and git will not always be in sync in terms of which
     files  are  ignored. For example, a file that is ignored via .gitignore but
     is tracked by git would not be searched by ripgrep even though  git  tracks
     it. This is unlikely to ever be fixed. Instead, you should either make sure
     your  exclude  rules  match the files you track precisely, or otherwise use
     git grep for search.

     Additional ignore rules can be provided outside of a git context:

     *	Any rules in .ignore. ripgrep will also respect .ignore files in  parent
	directories.

     *	Any  rules  in	.rgignore.  ripgrep will also respect .rgignore files in
	parent directories.

     *	Any rules in files specified with the --ignore-file flag.

     The precedence of ignore rules is as follows, with later  items  overriding
     earlier items:

     *	Files given by --ignore-file.

     *	Global gitignore rules, e.g., from $HOME/.config/git/ignore.

     *	Local rules from .git/info/exclude.

     *	Rules from .gitignore.

     *	Rules from .ignore.

     *	Rules from .rgignore.

     So  for example, if foo were in a .gitignore and !foo were in an .rgignore,
     then foo would not be ignored since .rgignore takes precedence over .gitig-
     nore.

     Each of the types of filtering can be configured via command line flags:

     *	There are several flags starting with --no-ignore that toggle which,  if
	any,  ignore rules are respected. --no-ignore by itself will disable all
	of them.

     *	-./--hidden will force ripgrep to search hidden files and directories.

     *	--binary will force ripgrep to search binary files.

     *	-L/--follow will force ripgrep to follow symlinks.

     As a special short hand, the -u flag can be specified up  to  three  times.
     Each additional time incrementally decreases filtering:

     *	-u is equivalent to --no-ignore.

     *	-uu is equivalent to --no-ignore --hidden.

     *	-uuu is equivalent to --no-ignore --hidden --binary.

     In particular, rg -uuu should search the same exact content as grep -r.

CONFIGURATION FILES
     ripgrep  supports reading configuration files that change ripgrep's default
     behavior. The format of the configuration file is an "rc" style and is very
     simple. It is defined by two rules:

     1. Every line is a shell argument, after trimming whitespace.

     2. Lines starting with # (optionally preceded by any amount of  whitespace)
	are ignored.

     ripgrep  will  look for a single configuration file if and only if the RIP-
     GREP_CONFIG_PATH environment variable is set  and	is  non-empty.	 ripgrep
     will  parse  arguments  from this file on startup and will behave as if the
     arguments in this file were prepended to any explicit  arguments  given  to
     ripgrep  on  the command line. Note though that the rg command you run must
     still be valid. That is, it must always contain at least one pattern at the
     command line, even if the configuration file uses the -e/--regexp flag.

     For example, if your ripgreprc file contained a single line:

	 --smart-case

     then the following command

	 RIPGREP_CONFIG_PATH=wherever/.ripgreprc rg foo

     would behave identically to the following command:

	 rg --smart-case foo

     Another example is adding types, like so:

	 --type-add
	 web:*.{html,css,js}*

     The above would behave identically to the following command:

	 rg --type-add 'web:*.{html,css,js}*' foo

     The same applies to using globs. This:

	 --glob=!.git

     or this:

	 --glob
	 !.git

     would behave identically to the following command:

	 rg --glob '!.git' foo

     The bottom line is that every shell argument needs to be on its  own  line.
     So for example, a config file containing

	 -j 4

     is probably not doing what you intend. Instead, you want

	 -j
	 4

     or

	 -j4

     ripgrep  also provides a flag, --no-config, that when present will suppress
     any and all support for configuration. This includes any future support for
     auto-loading configuration files from pre-determined paths.

     Conflicts between configuration files and explicit  arguments  are  handled
     exactly like conflicts in the same command line invocation. That is, assum-
     ing your config file contains only --smart-case, then this command:

	 RIPGREP_CONFIG_PATH=wherever/.ripgreprc rg foo --case-sensitive

     is exactly equivalent to

	 rg --smart-case foo --case-sensitive

     in  which	case,  the --case-sensitive flag would override the --smart-case
     flag.

SHELL COMPLETION
     Shell completion files are included in the release tarball for Bash,  Fish,
     Zsh and PowerShell.

     For    bash,    move   rg.bash   to   $XDG_CONFIG_HOME/bash_completion   or
     /etc/bash_completion.d/.

     For fish, move rg.fish to $HOME/.config/fish/completions.

     For zsh, move _rg to one of your $fpath directories.

CAVEATS
     ripgrep may abort unexpectedly when using default settings if it searches a
     file that is simultaneously truncated. This  behavior  can  be  avoided  by
     passing  the --no-mmap flag which will forcefully disable the use of memory
     maps in all cases.

     ripgrep may use a large amount  of  memory  depending  on	a  few	factors.
     Firstly, if ripgrep uses parallelism for search (the default), then the en-
     tire  output  for	each individual file is buffered into memory in order to
     prevent interleaving matches in the output. To avoid this, you can  disable
     parallelism  with	the  -j1 flag. Secondly, ripgrep always needs to have at
     least a single line in memory in order to execute a search. A file  with  a
     very  long  line  can thus cause ripgrep to use a lot of memory. Generally,
     this only occurs when searching binary data with  the  -a/--text  flag  en-
     abled. (When the -a/--text flag isn't enabled, ripgrep will replace all NUL
     bytes with line terminators, which typically prevents exorbitant memory us-
     age.)  Thirdly,  when ripgrep searches a large file using a memory map, the
     process will likely report its resident memory usage as  the  size  of  the
     file.  However, this does not mean ripgrep actually needed to use that much
     heap memory; the operating system will generally handle this for you.

VERSION
     15.1.0

HOMEPAGE
     https://github.com/BurntSushi/ripgrep

     Please report bugs and feature requests to the  issue  tracker.  Please  do
     your best to provide a reproducible test case for bugs. This should include
     the  corpus  being  searched, the rg command, the actual output and the ex-
     pected output. Please also include the output of running the same	rg  com-
     mand but with the --debug flag.

     If  you have questions that don't obviously fall into the "bug" or "feature
     request" category, then they are welcome in the Discussions section of  the
     issue tracker: https://github.com/BurntSushi/ripgrep/discussions.

AUTHORS
     Andrew Gallant <jamslam@gmail.com>

15.1.0				   2025-10-22				   RG(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=rg&sektion=1&manpath=FreeBSD+15.1-RELEASE+and+Ports>

home | help