Sed commands have the general form:
[
address
][ ,address
][ ! ]command
[arguments
]
Sed commands consist of
addresses
and editing
commands
.
commands
consist of a single letter or symbol; they are described later, alphabetically and by group.
arguments
include the label supplied to
b
or
t
, the filename supplied to
r
or
w
, and the substitution flags for
s
.
addresses
are described below.
A sed command can specify zero, one, or two addresses. An address can be a line number, the symbol $ (for last line), or a regular expression enclosed in slashes (/
pattern
/). Regular expressions are described in Section 6. Additionally, \n can be used to match any newline in the pattern space (resulting from the
N
command), but not the newline at the end of the pattern space.
If the command specifies: | Then the command is applied to: |
---|---|
No address | Each input line |
One address |
Any line matching the address. Some commands accept only one address: a , i , r , q , and = . |
Two comma-separated addresses |
First matching line and all succeeding lines up to and including a line matching the second address. |
An address followed by
!
|
All lines that do not match the address. |
s/xx/yy/g | Substitute on all lines (all occurrences). |
/BSD/d |
Delete lines containing
BSD
. |
/^BEGIN/,/^END/p |
Print between
BEGIN
and
END
, inclusive. |
/SAVE/!d |
Delete any line that doesn't contain
SAVE
. |
/BEGIN/,/END/!s/xx/yy/g |
Substitute on all lines, except between
BEGIN
and
END
. |
Braces ({}) are used in sed to nest one address inside another or to apply multiple commands at the same address.
[ /pattern
/ ][ ,/pattern
/ ] {command1 command2
}
The opening curly brace must end a line, and the closing curly brace must be on a line by itself. Be sure there are no blank spaces after the braces.