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.