Question sur SED

Résolu
linuxnico Messages postés 204 Date d'inscription   Statut Membre Dernière intervention   -  
linuxnico Messages postés 204 Date d'inscription   Statut Membre Dernière intervention   -
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

3 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
héhé... :o)
0
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
linuxnico Messages postés 204 Date d'inscription   Statut Membre Dernière intervention   10
 
super ca marche nickel!!!!!

Vous etes de vrai betes!!!

Merci
0