Question sur SED

Résolu
linuxnico Messages postés 206 Statut Membre -  
linuxnico Messages postés 206 Statut Membre -
Bonjour,

je suis en cours de creation d'un script et j'ai un soucis avec SED

je fait

sed 's/AAA/BBB/g' mon fichier.html

mais voila, AAA=href='"XXXXXXX"' et BBB='href="XXXXXX?test"'

or je n'arrive pas a conserver le XXXXXX (qui peux etre aleatoire)

je suis pas du tout un dieu du script, je tiens a le preciser.

ps: pour etre plus simple comment dans un fichier html, rajouter un texte derriere le texte contenu dans un HREF?

merci
Configuration: ubuntu 8.04
Firefox 3.0

3 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Il suffit de changer le délimiteur par défaut de sed qui est le slash (/) par un caractère non présent dans la chaîne de caractère à remplacer ou de substitution...

    Voir SED - Les délimiteurs
    0
    1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
       
      héhé... :o)
      0
  2. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
     
    Bonjour,

    Essayes avec l'expression suivante:
    sed -r 's/href="([^"]*)"/href="\1\?test"/g'
    Les parenthèses permettent de capturer un contenu pour le réutiliser ensuite avec \1 (\1 première paire, \2 deuxième paire, etc.) 
    
    [^"]* permet de ne capturer que le minimum dans ce cas (le mode ungreedy n'est pas présent dans sed) ce n'est util que si une ligne peut contenir plus d'un lien...
    
    En gros ça te permet de matcher:
    href="abc" href="def"
    au lieu de 
    href="abc" href="def"
    
    Exemple:
    sed -r 's/href="([^"]*)"/href="\1\?test"/g' << EOF
    href="abc" href="def"
    EOF
    
    href="abc?test" href="def?test"
    


    Cordialement
    0
  3. linuxnico Messages postés 206 Statut Membre 10
     
    super ca marche nickel!!!!!

    Vous etes de vrai betes!!!

    Merci
    0