rep
is a command-line utility that takes grep
-formatted lines via standard input, and performs a find-and-replace on them. By default, it outputs a diff
-preview of the changes to standard output, and with a flag it can write the changes to the files in place.
Output a diff to standard output replacing foo
with bar
:
grep -n foo *` | rep foo bar
Add the -w
flag to write the changes to the files in place:
grep -n foo *` | rep foo bar -w
The -n
(--line-number
) option is required so that grep
outputs the line number for each match.
rep
is available via cargo
:
cargo install rep-grep
The default pager is less
, the REP_PAGER
environment variable can be used to override the pager (e.g., export REP_PAGER=delta
in Bash).
rep -h
(or rep --help
, --help
provides slightly longer explanations of some options) will list help for all the command-line flags.
rep
was inspired bywgrep
for Emacs, which allows editinggrep
results in an Emacs buffer and then writing those changes to the source files.- Much of the functionality, and the overall structure of the source code, was borrowed
sd
.rep
began as a fork ofsd
. - The code for specifying a custom pager for
rep
was borrowed fromdelta
.