Name

pesubst — perl-regexp stream substitution

Syntax

pesubst [-f] [-s pattern] [-d pattern] [ -m modifiers] file...

Description

pesubst can substitute strings in streams and files, and does so by using the Perl engine. It obsoletes sed(1) for simple substitution tasks.

Options

-f
Fill the replacement string with NULs to bring it up to the size of the original string.
-s pattern
Source pattern to search for in files. This can be any valid Perl regular expression. Files are slurped in as a whole, so matching across newlines should be no problem (with the -ms flag).
-d pattern
Destination (replacement) string. This can be any valid string Perl accepts. For details see the perlre(1) manpage.
-m modifiers
A string of modifiers to apply to the regex. See below.

Modifiers

e
Evaluate the right side as an expression.
g
Replace globally, i.e., all occurrences. This is always enabled in pesubst.
i
Do case-insensitive pattern matching.
m
Treat string as multiple lines. That is, change "^" and "$" from matching the start or end of the string to matching the start or end of any line anywhere within the string.
o
Compile pattern only once.
s
Treat string as single line. That is, change "." to match any character whatsoever, even a newline, which normally it would not match.
x
Extend your pattern's legibility by permitting whitespace and comments.

Examples

Change all occurrences of foo (case-insensitive) to bar:
	pesubst -s foo -d bar -ms myfile
Change all Shell-style comments into C++ ones:
	pesubst -s '^#' -d // -mm myfile
Using both the "m" and "i" flags:
	pesubst -s '^#INCLUDE\s+' -d '#include ' -mmi myfile.c

See also

hxtools(7), pegrep(1)

Recommended readings

Pages related to pesubst you should read also: