---
name: "pesubst"
section: "1"
platform: "linux"
package: "hxtools"
version: "20231224-2+b2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/pesubst"
---

# pesubst(1)

perl-regexp stream substitution

## 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)](/sed/1.md) 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)](/perlre/1.md) 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)](/hxtools/7.md), [**pegrep**(1)](/pegrep/1.md)
