[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Modif auto du répertoire des images



[1. Ce serait bien de répondre dessous.
 2. Ce serait bien de couper les citations inutiles (surtout si 
    c’est pour répondre dessus).
 3. Ça aurait été bien de mettre HS dans le titre.]

Le samedi 23 juillet 2011 à 14:07:54, Yohann POILVERT a écrit :
> Oula! oui d'accord...
> Bon...
> 
> Avec ceci?
> 
> sed 's/<img
> src=\"images\/\([a-z][a-z]*\).\([a-z][a-z]*\)\">/<img
> src=\"\2\/\1.\2\">/g'

  Dans le désordre :
— pas la peine de protéger «"» (au contraire) ;
— il faut protéger le «.» ;
— simplification : xx* → x+ ;
— utiliser autre chose que / comme séparateur permet d’éviter
  d’avoir à les protéger dans les expressions ;
— utiliser l’option -r permet d’éviter d’autres protections
  (parenthèses, + et ?) ;
— un nom de fichier peut comporter des chiffres, des soulignés,
  des points, et tout un tas d’autres caractères, pas seulement
  [a-z] (manquaient aussi les majuscules).

  Et donc, pour répondre à la question initiale (avec les images 
de départ dans n’importe quel répertoire) :

sed -re 's:src="([^"]*/)?([^"/]+)\.([^"/.]+)":src="\3/\2.\3":g'

Notes :
— j’ai limité l’expression à src="…", il devrait y avoir
  d’autres attributs dans une balise img (au minimum width,
  height et alt) et src n’est pas forcément le premier. Par
  contre, il vaut mieux ne pas avoir src="…" ailleurs dans le
  texte…
— «"» ne peut pas être dans un nom de fichier (mais ce serait
  déjà difficile dans du HTML) ;
— si src peut être en majuscules, ajouter i au bout (→ …:gi) ;
— si c’est parfois «'» et non «"» qui est utilisé pour entourer
  les attributs, le plus simple est de faire une seconde passe.

-- 
 Sylvain Sauvage


Reply to: