Sed/Addresses-overview
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]