Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/12/2007, 09h55   #1
DIE
Membre à l'essai
 
Inscription : août 2005
Messages : 82
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 82
Points : 24
Points : 24
Par défaut Problème avec mon awk

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 :
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 :
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
__________________
############
# KSH sous AIX #
############
DIE est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h52.


 
 
 
 
Partenaires

Hébergement Web