SED: Stream EDitor. Sed est un éditeur de flux. Un éditeur de flux sert à appliquer des transformations de texte basiques sur un flux d'entrée (un fichier ou l'entrée d'un pipeline). Bien que similaire sur certains points à un éditeur scriptable (comme ed), sed fonctionne en n'effectuant qu'une seule passe sur l'entrée ou les entrées, avec un rendement nettement supérieur. Mais c'est la capacité à filtrer le texte d'un pipeline qui le distingue particulièrement des autres types d'éditeurs.
Cet article concerne la version 4.2.1 de Sed.
Rechercher/remplacer dans des noms de fichiers
Imaginons que je rentre de vacances; j'ai pris 2 000 photos; mais je ne m'y retrouve pas, parce qu'elles ont des noms du type DSC_xxxx.JPG (oui, j'ai un Nikon :) ). Je vais donc leur donner un nom qui corresponde un peu plus à ce qu'elles représentent.
Je commence par sauvegarder mon dossier de photos, puis je peux éventuellement tester "à blanc" :
for fichier in DSC_*.JPG; do echo $fichier | sed 's/DSC_/Week-end sur Tatooine /g'; done
Comme visiblement ma commande est valide, je l'applique :
for fichier in DSC_*.JPG; do nom=`echo $fichier | sed 's/DSC_/Week-end sur Tatooine /g'`; mv $fichier $nom; done
Rechercher/remplacer dans les contenus de fichiers
J'ai conçu un programme informatique, et je viens de changer d'adresse email. Je souhaite mettre à jour mon adresse email dans les commentaires des 2 000 fichiers source de mon programme.
Je commence par sauvegarder mon dossier de codes sources.
find . -name '*.php' -exec sed -i 's/ancienne\.adresse@e\.mail/nouvelle\.adresse@e\.mail/g' '{}' \;
Remplacera toutes les occurrences de "ancienne.adresse@e.mail" par "nouvelle.adresse@e.mail" dans tous les fichiers dont l'extension est ".php" du dossier courant et de tous ses sous-dossiers.
Voir aussi la manpage de sed version 4.2.1.
Retourner à Bash
Aucun commentaire:
Enregistrer un commentaire