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]