sed(1) CLIX sed(1)
NAME
sed - Runs a stream editor
SYNOPSIS
sed [-e cmd ... ] [-f sfile] [-n] [file]
FLAGS
Specifies a sed editing command line cmd. Not needed if specifying only
one editing command line and if there are no -f flags present. Causes a
sed script to be taken from file sfile. These flags accumulate.
Suppresses the default output, and displays only those lines specified by
the p command or the p flag of the s command.
DESCRIPTION
The sed command copies the named files from stdin (default) to stdout,
edited according to a script of commands. A script consists of one or
more sed editing command lines (cmd), one per line, of the following form:
[address[, address]] command [arguments]
In normal operation, sed cyclically copies a line of input into a pattern
space (unless there is something left after a D command), applies in
sequence all commands whose addresses select that pattern space, and at
the end of the script copies the pattern space to stdout (except under -n)
and deletes the pattern space.
Some of the commands use a hold space to save all or part of the pattern
space for subsequent retrieval.
An address is either a decimal number that counts input lines cumulatively
across files, a $ that addresses the last line of input, or a context
address, that is, a /regular expression/ in the style of ed, modified
thus:
⊕ In a context address, the construction \?regular expression?, where ?
is any character, is identical to /regular expression/. Note that in
the context address \xabc\xdefx, the second x stands for itself, so
that the regular expression is abcxdef.
⊕ The escape sequence \n matches a newline embedded in the pattern space.
⊕ A dot . matches any character except the terminal newline of the
pattern space.
⊕ A command line with no addresses selects every pattern space.
⊕ A command line with one address selects each pattern space that matches
2/94 - Intergraph Corporation 1
sed(1) CLIX sed(1)
the address.
⊕ A command line with two addresses selects the inclusive range from the
first pattern space that matches the first address through the next
pattern space that matches the second. (If the second address is a
number less than or equal to the line number first selected, only one
line is selected.) Thereafter the process is repeated, looking again
for the first address.
Editing commands can be applied only to nonselected pattern spaces by use
of the negation command ! (below).
In the following list of commands, the maximum number of permissible
addresses for each command is indicated in parentheses.
The text argument consists of one or more lines, all but the last of which
end with \ to hide the newline. Backslashes in text are treated like
backslashes in the replacement string of an s command, and may be used to
protect initial blanks and tabs against the stripping that is done on
every script line. The rfile or wfile argument must terminate the command
line and must be preceded by exactly one blank. Each wfile is created
before processing begins. There can be at most 10 distinct wfile
arguments.
a\
text (1) Append. Place text on the output before reading the next input
line.
b label
(2) Branch to the : command bearing the label. If label is empty,
branch to the end of the script.
c\
text (2) Change. Delete the pattern space. With 0 or 1 address or at
the end of a 2-address range, place text on the output. Start the
next cycle.
d (2) Delete the pattern space. Start the next cycle.
D (2) Delete the initial segment of the pattern space through the
first newline. Start the next cycle.
g (2) Replace the contents of the pattern space by the contents of
the hold space.
G (2) Append the contents of the hold space to the pattern space.
h (2) Replace the contents of the hold space by the contents of the
pattern space.
H (2) Append the contents of the pattern space to the hold space.
2 Intergraph Corporation - 2/94
sed(1) CLIX sed(1)
i\
text (1) Insert. Place text on stdout.
l (2) List the pattern space on stdout in an unambiguous form.
Nonprintable characters are displayed in octal notation and long
lines are folded.
n (2) Copy the pattern space to stdout. Replace the pattern space
with the next line of input.
N (2) Append the next line of input to the pattern space with an
embedded newline. (The current line number changes.)
p (2) Print. Copy the pattern space to stdout.
P (2) Copy the initial segment of the pattern space through the first
newline to stdout.
q (1) Quit. Branch to the end of the script. Do not start a new
cycle.
r rfile
(2) Read the contents of rfile. Place them on the output before
reading the next input line.
s/regular expression/replacement/flags
(2) Substitute the replacement string for instances of the regular
expression in the pattern space. Any character may be used instead
of /. (For a more detailed description, see ed(1).) Flags is zero
or more of:
n n = 1-512. Substitute for just the nth occurrence of the
regular expression.
g Global. Substitute for all nonoverlapping instances of
the regular expression rather than just the first one.
p Print the pattern space if a replacement was made.
w wfile Write. Append the pattern space to wfile if a
replacement was made.
t label
(2) Test. Branch to the : command bearing the label if any
substitutions have been made since the most recent reading of an
input line or execution of a t command. If label is empty, branch
to the end of the script.
w wfile
(2) Write. Append the pattern space to wfile.
2/94 - Intergraph Corporation 3
sed(1) CLIX sed(1)
x (2) Exchange the contents of the pattern and hold spaces.
y /string1/string2/
(2) Transform. Replace all occurrences of characters in string1
with the corresponding character in string2. The lengths of
string1 and string2 must be equal.
! command
(2) Do not. Apply the command (or group, if command is {) only to
lines not selected by the address(es).
: label
(0) This command does nothing. It bears a label to which the b and
t commands branch.
= (1) Place the current line number on stdout as a line.
{ (2) Execute the following commands through a matching } only when
the pattern space is selected.
(0) An empty command is ignored.
# (0) If a # appears as the first character on the first line of a
script file, then that entire line is treated as a comment, with
one exception. If the character after the # is an 'n', then the
default output will be suppressed. The rest of the line after #n
is also ignored. A script file must contain at least one
noncommented line.
EXAMPLES
1. The following performs a sed command command on the foo file:
sed 'command' foo
2. The following executes the commands in a sed script, contained in the
sedscript file, on the foo and foobar files:
sed -f sedscript foo foobar
NOTES
An input line to sed is limited to a maximum of 4,000 characters.
The sed command does not recognize patterns on the last line of a file if
the line does not end with a newline character.
DIAGNOSTICS
4 Intergraph Corporation - 2/94
sed(1) CLIX sed(1)
Can't open file
One of the files given in the command line does not have read
permission or does not exist.
Unrecognized command: cmd
A command given in the sed script was not valid.
sed: command garbled: cmd
The command given in the sed script did not use correct syntax.
EXIT VALUES
The sed command exits with a value of 0 if successful and a value of 2 if
an error occurs.
RELATED INFORMATION
Commands: awk(1), ed(1), grep(1)
2/94 - Intergraph Corporation 5