sed: Addresses overview
4.1 Addresses overview
======================
Addresses determine on which line(s) the 'sed' command will be executed.
The following command replaces the word 'hello' with 'world' only on
line 144:
sed '144s/hello/world/' input.txt > output.txt
If no addresses are given, the command is performed on all lines.
The following command replaces the word 'hello' with 'world' on all
lines in the input file:
sed 's/hello/world/' input.txt > output.txt
Addresses can contain regular expressions to match lines based on
content instead of line numbers. The following command replaces the
word 'hello' with 'world' only in lines containing the word 'apple':
sed '/apple/s/hello/world/' input.txt > output.txt
An address range is specified with two addresses separated by a comma
(','). Addresses can be numeric, regular expressions, or a mix of both.
The following command replaces the word 'hello' with 'world' only in
lines 4 to 17 (inclusive):
sed '4,17s/hello/world/' input.txt > output.txt
Appending the '!' character to the end of an address specification
(before the command letter) negates the sense of the match. That is, if
the '!' character follows an address or an address range, then only
lines which do _not_ match the addresses will be selected. The
following command replaces the word 'hello' with 'world' only in lines
_not_ containing the word 'apple':
sed '/apple/!s/hello/world/' input.txt > output.txt
The following command replaces the word 'hello' with 'world' only in
lines 1 to 3 and 18 till the last line of the input file (i.e.
excluding lines 4 to 17):
sed '4,17!s/hello/world/' input.txt > output.txt