Utilisation de sed

Aller cette fois si je jette mon dévolus 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 devoit 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 etre modifié : /etc/apache2/sites-avaible/artiflo.net

Alors on va commencer par tester le sed sur le fichier sans faire de modification. Sed va affichier 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 conviens alors vous pouvez le modifier en rajoutant -i. Il est recommandé de creer un fichier de backup au cas ou, 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 fichiersde tout un répertoire et les sous répertoire.

# find . -name “*.php” -type f -exec sed -i “s/chaine1/chaine2/g” {} \;

J’ai rajouter la condition que les fichier doivent être des fichier php mais c’est complètement facultatif.