home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  

10.3 Syntax of sed Commands

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.

10.3.1 Pattern Addressing

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.

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

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.

10.3.2 Examples

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.



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.

Previous: 10.2 Command-Line Syntax UNIX in a Nutshell: System V Edition Next: 10.4 Group Summary of sed Commands
10.2 Command-Line Syntax Book Index 10.4 Group Summary of sed Commands

The UNIX CD Bookshelf NavigationThe UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System