Forum Programmation.shell sed et regex

Posté par  .
Étiquettes : aucune
0
1
fév.
2005
Bonjour,

J'ai un fichier html mal écrit, et souhaite ajouter à toutes les balises img qui ne contiennent pas d'attribut alt un attribut alt="ma description".

Avez-vous une idée de la manière de faire ?

J'ai essayé avec sed mais je n'arrive pas à écrire l'expression régulière: commençant par "<img" suivi de n'importe quoi sauf de ">" et de la chaîne "alt", et finissant par ">".

Ma difficulté et d'exclure une chaîne, j'ai essayé [^>"alt"] mais sans succès ...

Merci de m'aider.
  • # Google

    Posté par  (site web personnel) . Évalué à 0.

    sed,regexp tutorial, howto

    Je suis naz en regexp, mais je sais que si je me penche sur ton probleme, il est resolu en moins de 30mn.

    Dans http://doublehp.ath.cx/tmp/helloworld.pl(...) tu as quelques exemples.
  • # perl

    Posté par  . Évalué à 3.

    Je sais pas si ca te va, mais tu peux tenter qqch comme ca avec perl :

    rechercher une balise <img.*>.
    Si le resultat de la recherche ne contient pas "alt=" alors remplacer la ligne courante par :
    "contenu avant la balise img" + "balise img + alt" + contenu apres la balise img"

    cat toto.html | perl -nle 'while (m/(.*)(<img[^>]*>)(.*)/gi) {$a=$1; $c=$3; if ($2!~/alt=/i) {$b=$2 ; $b=~s/>/ alt="madesc">/ ; $_=$a.$b.$c ;} } print' > titi.html

    Les gens qui connaissent perl remplaceront sans doute le -nle par -plie ( ca devrait economiser le print de fin et les redirections ) mais je débute alors pardonnez moi.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.