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
Partager