Article intéressant sur la substitution avec sed, c'est assez puissant si on veut apporter des
modifications sur un fichier très volumineux.
On peut remplacer une ligne par une autre, un mot par un autre, des minuscules par des majuscules et vis versa.
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 ÉDitor/; }' fichier.txt
Aucun commentaire:
Enregistrer un commentaire