.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.28.
.TH SED "1" "June 2009" "sed version 4.2.1" "User Commands"
.SH NAME
sed \- stream editor for filtering and transforming text
.SH SYNOPSIS
.B sed
[\fIOPTION\fR]... \fI{script-only-if-no-other-script} \fR[\fIinput-file\fR]...
.SH 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.
.HP
\fB\-n\fR, \fB\-\-quiet\fR, \fB\-\-silent\fR
.IP
suppress automatic printing of pattern space
.HP
\fB\-e\fR script, \fB\-\-expression\fR=\fIscript\fR
.IP
add the script to the commands to be executed
.HP
\fB\-f\fR script-file, \fB\-\-file\fR=\fIscript\-file\fR
.IP
add the contents of script-file to the commands to be executed
.HP
\fB\-\-follow\-symlinks\fR
.IP
follow symlinks when processing in place
.HP
\fB\-i[SUFFIX]\fR, \fB\-\-in\-place\fR[=\fISUFFIX\fR]
.IP
edit files in place (makes backup if extension supplied)
.HP
\fB\-l\fR N, \fB\-\-line\-length\fR=\fIN\fR
.IP
specify the desired line-wrap length for the `l' command
.HP
\fB\-\-posix\fR
.IP
disable all GNU extensions.
.HP
\fB\-r\fR, \fB\-\-regexp\-extended\fR
.IP
use extended regular expressions in the script.
.HP
\fB\-s\fR, \fB\-\-separate\fR
.IP
consider files as separate rather than as a single continuous
long stream.
.HP
\fB\-u\fR, \fB\-\-unbuffered\fR
.IP
load minimal amounts of data from the input files and flush
the output buffers more often
.TP
\fB\-\-help\fR
display this help and exit
.TP
\fB\-\-version\fR
output version information and exit
.PP
If no \fB\-e\fR, \fB\-\-expression\fR, \fB\-f\fR, or \fB\-\-file\fR option is given, then the first
non-option argument is taken as the sed script to interpret.  All
remaining arguments are names of input files; if no input files are
specified, then the standard input is read.
.PP
GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-gnu-utils@gnu.org>.
Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.
.SH "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 .
.SH "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.
.SH 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.
.SH COPYRIGHT
Copyright \(co 2009 Free Software Foundation, Inc.
.br
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
.PP
GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-gnu-utils@gnu.org>.
Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.
.SH "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/.
.PP
The full documentation for
.B sed
is maintained as a Texinfo manual.  If the
.B info
and
.B sed
programs are properly installed at your site, the command
.IP
.B info sed
.PP
should give you access to the complete manual.
