Sed – rechercher remplacer

Substitution basique

Simple

  • 1ère occurrence (de chaque ligne) rencontrée uniquement
sed 's/la/LA/' fichier.txt

Globale

  • Toutes les occurrences (de chaque ligne) rencontrées
sed 's/la/LA/g' fichier.txt

Ciblée

  • Seulement la 2ème occurrence (de chaque ligne) rencontrée
sed 's/la/LA/2' fichier.txt

Substitution conditionnée

Simple

/Motif/ - Uniquement si la ligne contient " motif "

sed '/awk/ s/sed/SED/' fichier.txt

Numéro de ligne - Uniquement la ligne n° " N "

sed '18 s/sed/SED/' fichier.txt

/Regex/ - Uniquement s’il y a correspondance avec l’expression régulière

sed '/^[ ][Ss]ed/ s/ed/ED/g' fichier.txt

Avancée

0,/regex/ - Uniquement la 1ère occurrence rencontrée

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

Bloc

/motif1/,/motif2/ - Uniquement dans l’intervalle " motif1 - motif2 "

sed '/Début/,/Fin/ s/ed/ED/' fichier.txt   # 1ère occurrence uniquement
sed '/Début/,/Fin/ s/ed/ED/g' fichier.txt  # toutes les occurrences

8,13 - Uniquement dans l’intervalle des lignes 8 à 13

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

On peut aussi combiner motif et ligne

sed '8,/Fin/ s/ed/ED/g' fichier.txt
sed '/Début/,13 s/ed/ED/g' fichier.txt

Ou encore avec des “regex”

sed '/Début/,$ s/ed/ED/g' fichier.txt # jusqu'à la fin ($)
sed '/^[ ][Ss]ed/,13 s/ed/ED/' fichier.txt

Avancée

Substituer tout un texte entre 2 motifs en excluant les motifs

sed  '/Début/,/Fin/{ /Début/b;/Fin/b; s/.*/SED - The Stream Editor/; }' fichier.txt
MAN  sed 

Suggestions de lecture :

comments powered by Disqus