SED - Substitution

December 2016





The substitute command:[ s. ]changes all occurrences of the regular expression into a new value.

Basic Substitution


Simple


1st match (each line) encountered only

sed 's/la/LA/' file.txt

Global


All occurrences (each line) encountered
sed 's/la/LA/g' file.txt

Targetted


Only the 2nd occurrence (each line) encountered
sed 's/la/LA/2' file.txt

Conditioned Substitution


Simplified


/explanation/ - Only if the line contains "explanation"
sed '/awk/ s/sed/SED/' file.txt


Number of line - Only line no "N"
sed '18 s/sed/SED/' file.txt


/Regex/ - Only if there is correspondence with the regular expression
sed '/^[ ][Ss]ed/ s/ed/ED/g' file.txt

Advanced


0,/regex/ - Only the 1st case found

sed '0,/sed/ s//SED/' file.txt

Bloc


/explanation1/,/explanation2/ - Only in between "explanation1 - explanation2"
sed '/start/,/End/ s/ed/ED/' file.txt # Only the 1st case found

sed '/Start/,/End/ s/ed/ED/g' file.txt # all case


8,13 - Only in between lines 8 to 13

sed '8,13 s/ed/ED/g' file.txt


We can also combined reason and line

sed '8,/End/ s/ed/ED/g' file.txt
sed '/Start/,13 s/ed/ED/g' file.txt


Or with "regex"
sed '/Start/,$ s/ed/ED/g' file.txt # to the end($)
sed '/^[ ][Ss]ed/,13 s/ed/ED/' file.txt

Advanced Use


Replace any text between 2 grounds excluding grounds
sed  '/Start/,/End/{ /Start/b;/End/b; s/.*/SED - The Stream ÉDitor/; }' file.txt

Related :

This document entitled « SED - Substitution » from CCM (ccm.net) is made available under the Creative Commons license. You can copy, modify copies of this page, under the conditions stipulated by the license, as this note appears clearly.