Aller cette fois si je jette mon dévolu sur sed.
J’ai besoin de remplacer une chaine par une autre dans un fichier, et ces chaines contiennent des caractères spéciaux de type /. Ce qui arrive très très souvent pour un PATH. Avec sed je vais donc devoir rajouter un \ devant chaque / (logique non ?).
Le PATH courant : /home/artiflo/monweb/rox
Le PATH qui va prendre la place du PATH courant : /home/artiflo/www/loutre
Le fichier qui va être modifié : /etc/apache2/sites-avaible/artiflo.net
Alors on va commencer par tester le sed sur le fichier sans faire de modification. Sed va afficher le résultat dans la console sans modifier le fichier :
# sed « s/\/home\/artiflo\/monweb\/rox\//\/home\/artiflo\/www\/loutre\//g » /etc/apache2/sites-avaible/artiflo.net
Si le résultat affiché vous convient alors vous pouvez le modifier en rajoutant -i. Il est recommandé de créer un fichier de backup au cas où, vous pouvez faire cela en utilisant -i.bak.
# sed -i.bak « s/\/home\/artiflo\/monweb\/rox\//\/home\/artiflo\/www\/loutre\//g » /etc/apache2/sites-avaible/artiflo.net
Enfin il se peut que vous soyez un kikoolol et que vous ayez envie de faire la modification de chaine dans des fichiers de tout un répertoire et les sous-répertoires.
# find . -name “*.php” -type f -exec sed -i “s/chaine1/chaine2/g” {} \;
J’ai rajouté la condition que les fichiers doivent être des fichiers php mais c’est complètement facultatif.