Addresses overview (sed, a stream editor)
Next: Numeric Addresses, Up: sed addresses [Contents][Index]
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
Next: Numeric Addresses, Up: sed addresses [Contents][Index]