Bonjour à tous,
Je reviens vers vous plein d'espoir
Je suis en train de développer un petit awk qui substitue certaines chaines de caractères par des varialbes du type &VAR1. &VAR2. etc
Mon problème vient de l'esperluète & qui est mal substitué dans mon dernier sub.

exemple pour la chaine :
RUN PROGRAM(MDSTATBA) PLAN(MDSTAT3A)


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
match($0,"PLAN[(].*[0-9][ABSP][)]")     {
                        JEU_match=substr($0,RSTART+5,RLENGTH-6)
                        JEU_chaine=JEU_match
                        JEU_numero=substr($0,RSTART+(RLENGTH-3),1)
                        JEU_nb=sub(JEU_numero,"\&JEU.",JEU_chaine)
                        sub(JEU_match,JEU_chaine)
                        JEU_compteur+=JEU_nb
                        print "################################"
                        print "JEU_match  :" JEU_match
                        print "JEU_chaine :" JEU_chaine
                        print "JEU_numero :" JEU_numero
                        print "JEU_compteur :" JEU_compteur
                        print
                        print "################################"
                        }

RESULTAT :

################################
JEU_match :MDSTAT3A
JEU_chaine :MDSTAT&JEU.A
JEU_numero :3
JEU_compteur :1
RUN PROGRAM(MDSTATBA) PLAN(MDSTATMDSTAT3AJEU.A)
################################

AWK interprète & comme une répétition de la chaine qui le précède.


Le meme script fonctionne mais en remplaçant & par £.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
match($0,"PLAN[(].*[0-9][ABSP][)]")     {
                        JEU_match=substr($0,RSTART+5,RLENGTH-6)
                        JEU_chaine=JEU_match
                        JEU_numero=substr($0,RSTART+(RLENGTH-3),1)
                        JEU_nb=sub(JEU_numero,"\£JEU.",JEU_chaine)
                        sub(JEU_match,JEU_chaine)
                        JEU_compteur+=JEU_nb
                        print "################################"
                        print "JEU_match  :" JEU_match
                        print "JEU_chaine :" JEU_chaine
                        print "JEU_numero :" JEU_numero
                        print "JEU_compteur :" JEU_compteur
                        print
                        print "################################"
                        }


Voila le résultat

################################
JEU_match :MDSTAT3A
JEU_chaine :MDSTAT£JEU.A
JEU_numero :3
JEU_compteur :1
RUN PROGRAM(MDSTATBA) PLAN(MDSTAT£JEU.A)
################################

C'est ce dernier résultat que je souhaiterai obtenir
Dernière question, mon script AWK vous semble-t-il correct, où peut on le simplifier ?

Merci