Pattern Addressing

A sed command can specify zero, one, or two addresses. In POSIX sed, an address has one of the forms in the following table. Regular expressions are described in Chapter 7. 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.

Address

Meaning

/pattern/

Lines that match pattern.

\pattern;

Like previous, but use semicolon as the delimiter instead of slash. Any character may be used. This is useful if pattern contains multiple slash characters.

n

Line number n.

$

The last input line.

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.

GNU sed allows additional address forms:

Address

Meaning

/pattern/i

Match pattern, ignoring case. I may be used instead of i.

/pattern/m

Match pattern, allowing ^ and $ to match around an embedded newline. M may be used instead of m.

0,/pattern/

Similar to 1,/pattern/, but if line 1 matches pattern, it will end the range.

address,+n

Matches line matching address, and the n following lines.

address~incr

Matches line matching address and every incr lines after it. For example, 42˜3 matches 42, 45, 48, and so on.

Get Linux in a Nutshell, 6th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.