Posts Tagged ‘rechercher remplacer’
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
Simplee
/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éé
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
Remplacer des expressions dans un fichier avec cat|sed
Il suffit d’utiliser la commande cat comme suit dans un shell :
cat fichier | sed s/AVANT/APRES/g > fichier
Cela aura pour effet de remplacer l’expression AVANT par APRÈS.
Il est donc aussi très simple de supprimer certains termes en ne mettant rien dans APRÈS, ce qui donne :
cat fichier | sed s/AVANT//g > fichier
Il existe également cette méthode pour la même chose :
cat fichier | sed / »mot_a_virer »/d > fichier
Sed permet de se servir des expression régulières pour arriver a des résultats encore plus puissants.
Par exemple, en lançant :
cat fichier | sed /^$/d > fichier
on supprime dans le fichier toutes les lignes blanches
VIM – Faire un rechercher remplacer
| /chaine | Recherche le texte « chaine » vers le bas |
| ?chaine | Recherche le texte « chaine » vers le haut |
| n | Répète la dernière recherche |
| //[RET] | Idem que n |
| N | Inverse la recherche précédente |
| :g/expr1/s//expr2/g | Recherche dans tous le fichier l’expression 1 et la remplace par l’expression 2 |
| :g/expr1/s//expr2/gc | Idem, mais demande une confirmation avant de remplacer |
| |
Recherche de la ligne x à la ligne y l’expression 1 et la remplace par l’expression 2 |