.SH NAME
sed \- a Stream EDitor
.SH SYNOPSIS
.nf
sed [-V] [--version] [--help] [-n] [--quiet] [--silent]
    [-l N] [--line-length=N] [-u] [--unbuffered]
    [-r] [--regexp-extended] 
    [-e script] [--expression=script]
    [-f script-file] [--file=script-file]
    [script-if-no-other-script]
    [file...]
.fi
[DESCRIPTION]
.ds sd \fIsed\fP
.ds Sd \fISed\fP
\*(Sd is a stream editor.
A stream editor is used to perform basic text
transformations on an input stream
(a file or input from a pipeline).
While in some ways similar to an editor which
permits scripted edits (such as \fIed\fP),
\*(sd works by making only one pass over the
input(s), and is consequently more efficient.
But it is \*(sd's ability to filter text in a pipeline
which particularly distinguishes it from other types of
editors.

[COMMAND SYNOPSIS]
This is just a brief synopsis of \*(sd commands to serve as
a reminder to those who already know \*(sd;
other documentation (such as the texinfo document)
must be consulted for fuller descriptions.
.SS
Zero-address ``commands''
.TP
.RI :\  label
Label for
.B b
and
.B t
commands.
.TP
.RI # comment
The comment extends until the next newline (or the end of a
.B -e
script fragment).
.TP
}
The closing bracket of a { } block.
.SS
Zero- or One- address commands
.TP
=
Print the current line number.
.TP
a \e
.TP
.I text
Append
.IR text ,
which has each embedded newline preceded by a backslash.
.TP
i \e
.TP
.I text
Insert
.IR text ,
which has each embedded newline preceded by a backslash.
.TP
q [\fIexit-code\fR]
Immediately quit the \*(sd script without processing
any more input, except that if auto-print is not disabled
the current pattern space will be printed.  The exit code
argument is a GNU extension.
.TP
Q [\fIexit-code\fR]
Immediately quit the \*(sd script without processing
any more input.  This is a GNU extension.
.TP
.RI r\  filename
Append text read from
.IR filename .
.TP
.RI R\  filename
Append a line read from
.IR filename .
Each invocation of the command reads a line from the file.
This is a GNU extension.
.SS
Commands which accept address ranges
.TP
{
Begin a block of commands (end with a }).
.TP
.RI b\  label
Branch to
.IR label ;
if
.I label
is omitted, branch to end of script.
.TP
.RI t\  label
If a s/// has done a successful substitution since the
last input line was read and since the last t or T
command, then branch to
.IR label ;
if
.I label
is omitted, branch to end of script.
.TP
.RI T\  label
If no s/// has done a successful substitution since the
last input line was read and since the last t or T
command, then branch to
.IR label ;
if
.I label
is omitted, branch to end of script.  This is a GNU
extension.
.TP
c \e
.TP
.I text
Replace the selected lines with
.IR text ,
which has each embedded newline preceded by a backslash.
.TP
d
Delete pattern space.
Start next cycle.
.TP
D
Delete up to the first embedded newline in the pattern space.
Start next cycle, but skip reading from the input
if there is still data in the pattern space.
.TP
h H
Copy/append pattern space to hold space.
.TP
g G
Copy/append hold space to pattern space.
.TP
x
Exchange the contents of the hold and pattern spaces.
.TP
l
List out the current line in a ``visually unambiguous'' form.
.TP
.RI l\  width
List out the current line in a ``visually unambiguous'' form,
breaking it at
.I width
characters.  This is a GNU extension.
.TP
n N
Read/append the next line of input into the pattern space.
.TP
p
Print the current pattern space.
.TP
P
Print up to the first embedded newline of the current pattern space.
.TP
.RI s/ regexp / replacement /
Attempt to match
.I regexp
against the pattern space.
If successful, replace that portion matched
with
.IR replacement .
The
.I replacement
may contain the special character
.B &
to refer to that portion of the pattern space which matched,
and the special escapes \e1 through \e9 to refer to the
corresponding matching sub-expressions in the
.IR regexp .
.TP
.RI w\  filename
Write the current pattern space to
.IR filename .
.TP
.RI W\  filename
Write the first line of the current pattern space to
.IR filename .
This is a GNU extension.
.TP
.RI y/ source / dest /
Transliterate the characters in the pattern space which appear in
.I source
to the corresponding character in
.IR dest .
.SH
Addresses
\*(Sd commands can be given with no addresses, in which
case the command will be executed for all input lines;
with one address, in which case the command will only be executed
for input lines which match that address; or with two
addresses, in which case the command will be executed
for all input lines which match the inclusive range of
lines starting from the first address and continuing to
the second address.
Three things to note about address ranges:
the syntax is
.IR addr1 , addr2
(i.e., the addresses are separated by a comma);
the line which
.I addr1
matched will always be accepted,
even if
.I addr2
selects an earlier line;
and if
.I addr2
is a
.IR regexp ,
it will not be tested against the line that
.I addr1
matched.
.PP
After the address (or address-range),
and before the command, a
.B !
may be inserted,
which specifies that the command shall only be
executed if the address (or address-range) does
.B not
match.
.PP
The following address types are supported:
.TP
.I number
Match only the specified line
.IR number .
.TP
.IR first ~ step
Match every
.IR step 'th
line starting with line
.IR first .
For example, ``sed -n 1~2p'' will print all the odd-numbered lines in
the input stream, and the address 2~5 will match every fifth line,
starting with the second.
.I first
can be zero; in this case, \*(sd operates as if it were equal to
.IR step .
(This is an extension.)
.TP
$
Match the last line.
.TP
.RI / regexp /
Match lines matching the regular expression
.IR regexp .
.TP
.BI \fR\e\fPc regexp c
Match lines matching the regular expression
.IR regexp .
The
.B c
may be any character.
.PP
GNU \*(sd also supports some special 2-address forms:
.TP
.RI 0, addr2
Start out in "matched first address" state, until
.I addr2
is found.
This is similar to
.RI 1, addr2 ,
except that if
.I addr2
matches the very first line of input the
.RI 0, addr2
form will be at the end of its range, whereas the
.RI 1, addr2
form will still be at the beginning of its range.
This works only when
.I addr2
is a regular expression.
.TP
.IR addr1 ,+ N
Will match
.I addr1
and the
.I N
lines following
.IR addr1 .
.TP
.IR addr1 ,~ N
Will match
.I addr1
and the lines following
.I addr1
until the next line whose input line number is a multiple of
.IR N .

[REGULAR EXPRESSIONS]
POSIX.2 BREs
.I should
be supported, but they aren't completely because of performance
problems.
The
.B \en
sequence in a regular expression matches the newline character,
and similarly for
.BR \ea ,
.BR \et ,
and other sequences.

[SEE ALSO]
.BR awk (1),
.BR ed (1),
.BR grep (1),
.BR tr (1),
.BR perlre (1),
sed.info,
any of various books on \*(sd,
.na
the \*(sd FAQ (http://sed.sf.net/grabbag/tutorials/sedfaq.txt),
http://sed.sf.net/grabbag/.

[BUGS]
.PP
E-mail bug reports to
.BR bonzini@gnu.org .
Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.
Also, please include the output of ``sed --version'' in the body
of your report if at all possible.
