Quand on apprécie de travailler en ligne de commande sur son shell préféré, on cherche forcément à être productif.
Quoi de mieux dans le cas d’un rechercher / remplacer de masse, que d’utiliser des outils précis et rapides afin de travailler intelligemment, afin d’éviter un travail répétitif inutile et fastidieux.
Donc voici des solutions simples pour gagner du temps grâce à “Sed” (plus d’info). sed est un outil extrêmement puissant pour qui sait le manier, et dans notre exemple de traitement de masse, il va nous être d’une aide précieuse.
Nous allons utiliser la syntaxe suivante pour trouver et remplacer une chaîne de caractère dans un fichier texte :
bash# sed -i ’s/[texte_recherché]/[texte_de_remplacement]/’ monfichier.txt
Pour l’exercice nous allons dire que monfichier.txt comporte une liste d’anciennes adresses email @wanadoo.fr et que nous désirons les mettre à jour en @orange.fr .
bash# cat monfichier.txt
toto@wanadoo.fr
toto@wanadoo.fr
toto@wanadoo.fr
etc.
Donc dans ce cas, cela nous donnera :
bash# sed -i ’s/wanadoo/orange/g’ monfichier.txt
Voilà en détail l’explication :
Bon, cela fonctionne sur un fichier, maintenant dans le cas de plusieurs fichiers, voici la commande ‘find’ qui va compléter l’astuce.
bash# find . -maxdepth 1 -name “*.txt” -type f -exec sed -i ’s/wanadoo/orange/g’ {} \
En détail cela nous donne:
Et voilà, simple non ?
Pour plus de possibilités n’hésitez pas à utiliser le MAN (man find et/ou man sed) ainsi que la page sed dans le wikipédia.