Files
SedPP/man/sed.1
T

271 lines
6.2 KiB
Groff

.TH SED 1 "June 2026" "Sed++ 1.0.0" "User Commands"
.SH NAME
sed \- stream editor for filtering and transforming text
.SH SYNOPSIS
.B sed
.RI [ OPTION ]...
.RI { script-only-if-no-other-script }
.RI [ input-file ]...
.SH DESCRIPTION
.B sed
reads text from the named input files, or standard input if no files are named,
and applies a compiled editing script to each input record.
By default each pattern space is printed after the script finishes for that
cycle.
.PP
Sed++ is a native C++ implementation intended to behave like GNU
.BR sed
for ordinary command-line use and for the GNU sed 4.10 behavioral test suite.
It supports standard sed pattern space, hold space, addresses, address ranges,
substitutions, transliteration, branching, file reads and writes, shell
execution commands, NUL-delimited input, and in-place editing.
.SH OPTIONS
.TP
.BR \-n ", " \-\-quiet ", " \-\-silent
Suppress automatic printing of pattern space. Output is produced only by
commands such as
.BR p ,
.BR P ,
.BR l ,
.BR a ,
.BR i ,
.BR c ,
.BR r ,
.BR R ,
.BR w ,
and
.BR = .
.TP
.BI \-e " script"
.TQ
.BI \-\-expression= script
Add
.I script
to the commands to be executed. Multiple
.B \-e
and
.B \-f
options are evaluated in command-line order.
.TP
.BI \-f " script-file"
.TQ
.BI \-\-file= script-file
Add commands read from
.I script-file
to the program. A file name of
.B \-
reads the script from standard input.
.TP
.BR \-E ", " \-r ", " \-\-regexp-extended
Use extended regular expressions.
.TP
.BI \-i [ suffix ]
.TQ
.BI \-\-in-place[= suffix ]
Edit files in place. If
.I suffix
is supplied, create a backup before replacing the file. If the suffix contains
.BR * ,
each star is replaced by the edited file name; otherwise the suffix is appended
to the file name.
.TP
.BI \-l " N"
Set the default line-wrap width used by the
.B l
command. The attached form
.BI \-l N
is also accepted.
.TP
.BR \-z ", " \-\-null-data
Use NUL bytes rather than newlines as input record separators.
.TP
.BR \-s ", " \-\-separate
Treat input files separately for line numbering and the
.B $
address.
.TP
.BR \-u ", " \-\-unbuffered
Enable unbuffered-style behavior for supported streaming cases.
.TP
.BR \-b
Accepted for GNU sed compatibility. On Unix streams are already binary, so this
option has no effect.
.TP
.BR \-\-follow-symlinks
When editing in place, follow symlinks and edit the final target rather than
replacing the symlink itself.
.TP
.BR \-\-sandbox
Request GNU-compatible sandbox behavior. Shell execution through
.B e
commands and substitution
.B e
flags is disabled at runtime; selected filesystem-access diagnostics are
reported for GNU sed compatibility.
.TP
.BR \-\-posix
Enable stricter POSIX behavior and reject selected GNU extensions.
.TP
.BR \-\-debug
Print a minimal compiled-program debug view before execution.
.TP
.BR \-\-help
Print a short usage summary and exit.
.TP
.BR \-\-version
Print the Sed++ version and exit.
.SH SCRIPT LANGUAGE
A sed script is a sequence of commands. A command has the form:
.PP
.RS
.IR [ address [ , address ]] [ ! ] command [ arguments ]
.RE
.PP
Addresses select the input cycles where a command applies. Supported addresses
include numeric line addresses,
.B $
for the last input record, regular-expression addresses such as
.BI / regexp / ,
GNU periodic addresses such as
.IR first ~ step ,
and GNU range endings
.BI + N
and
.BI ~ N .
The
.B !
modifier negates address selection.
.PP
Regular expressions use POSIX basic syntax unless
.B \-E
or
.B \-r
is supplied. Empty regular expressions reuse the most recently compiled
non-empty regular expression.
.SH COMMANDS
.TP
.BI s/ regexp / replacement / flags
Replace text matched by
.I regexp
with
.IR replacement .
Supported flags include
.B g
for global replacement,
.B p
to print after a successful substitution,
.B e
to execute the result as a shell command,
.B i
or
.B I
for case-insensitive matching,
.B m
or
.B M
for multiline matching, numeric occurrence selection, and
.BI w " file"
to write successful replacements.
.TP
.BI y/ source / dest /
Transliterate characters from
.I source
to corresponding characters in
.IR dest .
.TP
.BR p ", " P
Print the whole pattern space, or only the portion through the first embedded
newline.
.TP
.BR d ", " D
Delete the pattern space and start the next cycle, or delete through the first
embedded newline and restart the script with the remaining pattern space.
.TP
.BR n ", " N
Read the next input record, replacing or appending to pattern space.
.TP
.BR h ", " H ", " g ", " G ", " x
Copy, append, restore, append from, or exchange the hold space and pattern
space.
.TP
.BR a ", " i ", " c
Append, insert, or replace text.
.TP
.BI r " file"
.TQ
.BI R " file"
Append a whole file, or append the next line from a file.
.TP
.BI w " file"
.TQ
.BI W " file"
Write the whole pattern space, or only the portion through the first embedded
newline, to a file.
.TP
.BI e " command"
Execute a shell command. With no command argument, execute the current pattern
space and replace it with the command output.
.TP
.BR b ", " t ", " T ", " : label
Branch unconditionally, branch after a successful substitution, branch after no
successful substitution, or define a label.
.TP
.BR q ", " Q
Quit, optionally with an exit status. The
.B q
command prints the current pattern space first unless automatic printing is
suppressed;
.B Q
quits without printing it.
.TP
.BR l
List pattern space with escaped non-printing characters.
.TP
.BR = ", " F ", " z
Print the current line number, print the current file name, or clear pattern
space.
.TP
.BR { ", " }
Group commands.
.SH ENVIRONMENT
.TP
.B POSIXLY_CORRECT
Enables POSIX runtime behavior.
.TP
.B COLS
Used as the default wrap width for the
.B l
command when no line length is specified.
.SH EXIT STATUS
.TP
.B 0
Successful execution.
.TP
.B 1
Script compilation or runtime command failure.
.TP
.B 4
Usage, input, output, or in-place editing failure.
.SH EXAMPLES
.TP
Print only lines 10 through 20:
.EX
sed -n '10,20p' file.txt
.EE
.TP
Replace all occurrences of a word in place, keeping backups:
.EX
sed -i.bak 's/old/new/g' file.txt
.EE
.TP
Use NUL-delimited records:
.EX
find . -print0 | sed -z 's#^./##'
.EE
.SH SEE ALSO
.BR awk (1),
.BR grep (1),
.BR regex (7)
.SH AUTHORS
Sed++ is maintained as part of the sfgos_revamp sed project.