ripgrep is a line-oriented search tool that recursively searches your current directory for a regex pattern while respecting your gitignore rules. ripgrep has first class support on Windows, macOS and Linux, with binary downloads available for every release. ripgrep is similar to other popular search tools like The Silver Searcher, ack and grep.
This is a new minor version release of ripgrep that contains some major new
features, a huge number of bug fixes, and is the first release based on
libripgrep. The entirety of ripgrep's core search and printing code has been
rewritten and generalized so that anyone can make use of it.
Major new features include PCRE2 support, multi-line search and a JSON output
format.
BREAKING CHANGES:
- The minimum version required to compile Rust has now changed to track the
latest stable version of Rust. Patch releases will continue to compile with
the same version of Rust as the previous patch release, but new minor
versions will use the current stable version of the Rust compile as its
minimum supported version. - The match semantics of
-w/--word-regexp
have changed slightly. They used
to be\b(?:<your pattern>)\b
, but now it's
(?:^|\W)(?:<your pattern>)(?:$|\W)
. This matches the behavior of GNU grep
and is believed to be closer to the intended semantics of the flag. See
#389 for more details.
Feature enhancements:
- FEATURE #162:
libripgrep is now a thing. The primary crate is
grep
. - FEATURE #176:
Add-U/--multiline
flag that permits matching over multiple lines. - FEATURE #188:
Add-P/--pcre2
flag that gives support for look-around and backreferences. - FEATURE #244:
Add--json
flag that prints results in a JSON Lines format. - FEATURE #321:
Add--one-file-system
flag to skip directories on different file systems. - FEATURE #404:
Add--sort
and--sortr
flag for more sorting. Deprecate--sort-files
. - FEATURE #416:
Add--crlf
flag to permit$
to work with carriage returns on Windows. - FEATURE #917:
The--trim
flag strips prefix whitespace from all lines printed. - FEATURE #993:
Add--null-data
flag, which makes ripgrep use NUL as a line terminator. - FEATURE #997:
The--passthru
flag now works with the--replace
flag. - FEATURE #1038-1:
Add--line-buffered
and--block-buffered
for forcing a buffer strategy. - FEATURE #1038-2:
Add--pre-glob
for filtering files through the--pre
flag.
Bug fixes:
- BUG #2:
Searching with non-zero context can now use memory maps if appropriate. - BUG #200:
ripgrep will now stop correctly when its output pipe is closed. - BUG #389:
The-w/--word-regexp
flag now works more intuitively. - BUG #643:
Detection of readable stdin has improved on Windows. - BUG #441,
BUG #690,
BUG #980:
Matching empty lines now works correctly in several corner cases. - BUG #764:
Color escape sequences now coalesce, which reduces output size. - BUG #842:
Add man page to binary Debian package. - BUG #922:
ripgrep is now more robust with respect to memory maps failing. - BUG #937:
Color escape sequences are no longer emitted for empty matches. - BUG #940:
Context from the--passthru
flag should not impact process exit status. - BUG #984:
Fixes bug inignore
crate where first path was always treated as a symlink. - BUG #990:
Read stderr asynchronously when running a process. - BUG #1013:
Add compile time and runtime CPU features to--version
output. - BUG #1028:
Don't complete bare pattern after-f
in zsh.