Si je comprends bien, avec awk et sed, c'est super difficile de faire des manips sur des chaines aussi compliquées et vu que je connais un peu perl et que je l'utilise sur des machines ou il est présent (debian !), il faut mieux que j'utilise perl ?
Bon, je regarderais dans les manuels avancés de sed et awk voir si je trouve (et comprends :) comment manipuler des chaines aussi compliquées. En attendant je vais utiliser perl, et vous remercie de votre aide. On 7/21/06, Sylvain Sauvage <[EMAIL PROTECTED]> wrote:
Vendredi 21 juillet 2006, 15:40:52 CEST, Eric Veiras Galisson a écrit : >[...] > si je lance avec awk cette commande : > > $ awk '#<a href="http://mon.domaine.tld/informatique/services.html" > class=lienTitre>Services</a># {print $1"\n<a > href="http://wiki.domaine.tld/wiki" class=lienTitre>Wiki</a>"}' > fichier.html > > je n'ai aucun message d'erreur mais aucune modification non plus de mon > fichier awk attend forcément un / pour une regexp, comme tu lui donnes #, il prend ça pour une expression. Voir le manuel de awk, je m'en sers rarement avec des expressions complexes. > (j'ai suivi ton conseil et remplacé mon ! par #, parce qu'avec le ! > j'avais des messages d'erreur... ce n'était pas une bonne idée > d'utiliser ce symbole...) Normal, en bash (et autres sh), ! sert pour la gestion d'historiques. (Et, s'il est « simple-quoté », c'est l'opérateur non.) > Avec sed > $ sed -ei '#<a href="http://mon.domaine.tld/informatique/services.html" > class=lienTitre>Services</a># a<a href="http://wiki.domaine.tld/wiki" > class=lienTitre>Wiki</a>' fichier.html Sed peut prendre d'autres caractères que / comme marqueur de regexp, si on suit ces règles : - après une commande, aucun problème (p.ex. 's:a:b:' est pareil que 's/a/b/) ; - avant une commande (c'est-à-dire comme adresse), il faut protéger le premier : '/a/,/b/ s/x/y/' peut devenir '\:a:,\,b, s!x!y!' > Par contre, si j'utilise perl > > $ perl -pi.bak -e 's#(<a > href="http://mon.domaine.tld/informatique/services.html" > class=lienTitre>Services</a>)#$1<BR>\n<a > href="http://wiki.domaine.tld/wiki" class=lienTitre>Wiki</a>#g' > test.html > > là, ça marche bien, donc mon problème est résolu, mais j'aurais > néanmoins aimé pouvoir le faire avec sed et awk. Je ne connais pas bien perl mais sans doute est-ce parce que tu places la regexp après la commande 's' (comme cela fonctionnerait avec sed (sauf que non à cause du saut ligne)). -- Sylvain Sauvage -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:" To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
-- Eric Veiras Galisson