sed commands have the general form:
[address[
,
address]][!
]command [arguments]
sed copies each line of input into the pattern space. sed instructions consist of addresses and editing commands. If the address of the command matches the line in the pattern space, the command is applied to that line. If a command has no address, it is applied to each input line. If a command changes the contents of the pattern space, subsequent commands and addresses are applied to the current line in the pattern space, not the original input line.
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 Chapter 6, Pattern Matching. Additionally, \n
matches any newline in the pattern space (resulting from the N
command), but not the newline at the end of the pattern space.
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 its line, and the closing curly brace must be on a line by itself. Be sure there are no spaces after the braces.