[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Modification de fichiers texte et gestion des caractères spéciaux avec sed, awk, perl



On 7/21/06, Marc Chantreux <marc.chantreux@ulpmm.u-strasbg.fr> wrote:
le 21/07/2006,
Eric Veiras Galisson nous écrivait :
>    c'est déjà ce que j'ai fait, à la fois pour sed, awk et perl en utilisant
>    ! au lien de / comme délimiteur (et non pas caractère de séparation comme
>    je l'ai écrit plus haut)

pourrais tu nous donner un cas concret avec une source, une commande et
un message d'erreur. Nous aurions moins de difficulté a cerner ton
problème.

En effet, j'aurais au moins pu donner le message d'erreur... désolé.

Voilà.

J'ai un fichier html comme celui-ci (je l'ai simplifié) :
<tr>
       <td class="sstitre"><div align="left">
               <a
href="http://mon.domaine.tld/informatique/accueil.html";
class=lienTitre>Accueil</a><BR>
               <a
href="http://mon.domaine.tld/informatique/contact.html";
class=lienTitre>Coordonnées</a><BR>
                <a
href="http://mon.domaine.tld/informatique/securite.html";
class=lienTitre>Sécurité</a><BR>
                <a
href="http://mon.domaine.tld/informatique/services.html";
class=lienTitre>Services</a><BR>
     </div>
      </td>
</tr>

et je veux insérer derrière la ligne "Services" un autre lien vers un Wiki

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

(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...)

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

J'ai le message

sed: -e expression n°1, caractère 1: \ attendu après `a', `c' ou `i'

surement dû au '<' juste après.


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.





--
Eric Veiras Galisson



Reply to: