Expressions regulieres pas si reguliere que ca ...
3 réponses
Siddharta
voici mon script:
#!/usr/bin/perl -w
use strict;
$/=3D"\n ";
while (<>){
if (/\nP\|1\|\d*\|\|\d*\|LE MITOUARD/){
print ;
}
}
quand je le lance avec un fichier de log en argument et que je le
redirige vers le fichier toto voici ce qu'il me donne (extrait):
-----------------------------------------------------------------
12/07/2005 21:21:00 : DEBUT SESSION
P|1|27098|||LE
MITOUARD~FREDERIQUE~~~Mle~||19600912|F||~~~~|PAT01~91|||||||||||||MP|~~~~~|=
~||9||||
=3D=3D=3D|statut=3DMP|evt=3D91|ipp=3D27098|UF=3D|LIT=3D|CHAMBRE=3D|cac=3D|n=
sejour=3D|datemvt=3D|hmvt=3D|IPS=3D|num=3Dfic_20050712_000000369042
CRE/MAJ IDENT
PATIENT non psy
mvt sans date
P|1|27098||90067140|LE
MITOUARD~FREDERIQUE~~~Mle~||19600912|F||~~~~|EH10~11||||||||||||20050712212=
400|IP|~~6201~~~6201|01~01||9||1000087075||
=3D=3D=3D|statut=3DIP|evt=3D11|ipp=3D27098|UF=3D620101|LIT=3D|CHAMBRE=3D|ca=
c=3D01|nsejour=3D90067140|datemvt=3D12/07/2005|hmvt=3D21:24|IPS=3D100008707=
5|num=3Dfic_20050712_000000369044
CRE/MAJ IDENT
AFFECTATION possecteur et posuf
AFFECTATION IPS
SEJOUR EXITE DEJA
PAS DE NV MVT - LIEU et TYPEMVT identiques que MVT en cours
66|66|1|1
12/07/2005 21:21:02 : FIN SESSION
P|1|27098||90067140|LE MITOUARD~FREDERIQUE~~~Mle~||19600912|F||55
AVENUE DU 11 NOVEMBRE~~LE PERREUX SUR
MARNE~~94170|PAT11~92|||||||||||||MP|~~~~~|~||9||1000087075||
=3D=3D=3D|statut=3DMP|evt=3D92|ipp=3D27098|UF=3D|LIT=3D|CHAMBRE=3D|cac=3D|n=
sejour=3D90067140|datemvt=3D|hmvt=3D|IPS=3D1000087075|num=3Dfic_20050712_00=
0000369050
CRE/MAJ IDENT
mvt sans date
12/07/2005 21:23:03 : FIN SESSION
P|1|25277||90067164|TOURNAIRE~ANITA~~~Mme~|THIBOULT|19630207|F||HOTEL
DES
VENETES~~ARRADON~~56610|EH11~31|0297448585|||VANNES|56000||||TOURNAIRE|CHRI=
STIAN||20050715132600|MP|~~6315~~~6315|01~01||2||1000087181||
=3D=3D=3D|statut=3DMP|evt=3D31|ipp=3D25277|UF=3D631501|LIT=3D|CHAMBRE=3D|ca=
c=3D01|nsejour=3D90067164|datemvt=3D15/07/2005|hmvt=3D13:26|IPS=3D100008718=
1|num=3Dfic_20050715_000000370926
CRE/MAJ IDENT
AFFECTATION possecteur et posuf
AFFECTATION IPS
15/07/2005 18:35:05 : FIN SESSION
[...]
"--------------------------------------------------------------------------
ma question est : que vienne faire TOURNAIRE et LE BRECH dans ce
'filtre'?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Klaus Eichner
"Siddharta" wrote in message news:
voici mon script:
#!/usr/bin/perl -w use strict; $/="n "; while (<>){ if (/nP|1|d*||d*|LE MITOUARD/){ print ;
Je propose d'ajouter des "bornes visuelles" (sans modifier le critère du filtre!), par ex.:
print "n======= debut enregistrement =======n";
print ;
print "======= fin enregistrement =======n";
} }
quand je le lance avec un fichier de log en argument et que je le redirige vers le fichier toto voici ce qu'il me donne (extrait): ----------------------------------------------------------------- P|1|27098|||LE MITOUARD~FRE [...] P|1|27098||90067140|LE MITOUARD~FRE [...] P|1|27098||90067140|LE MITOUARD~FRE [...] P|1|27006||90067138|LE BRECH~SA [...] P|1|27006||90067138|LE BRECH~SA [...] P|1|27098||90067140|LE MITOUARD~FRE [...] P|1|25277||90067164|TOURNAIRE~AN [...]
ma question est : que vienne faire TOURNAIRE et LE BRECH dans ce 'filtre'?
Il me semble que les lignes avec "TOURNAIRE" et "LE BRECH" ne sont pas des enregistrements individuels, mais des continuations d'un enregistrement précédent. Essaie de relancer le programme avec les bornes supplémentaires ("== debut enregistrement ==" et "== fin enregistrement =="). Avec ces bornes, tu peux mieux séparer les enregistrements individuels.
-- Klaus
"Siddharta" <michael.henneton@laposte.net> wrote in message
news:1122550976.258053.239650@g43g2000cwa.googlegroups.com...
voici mon script:
#!/usr/bin/perl -w
use strict;
$/="n ";
while (<>){
if (/nP|1|d*||d*|LE MITOUARD/){
print ;
Je propose d'ajouter des "bornes visuelles" (sans modifier le critère du
filtre!), par ex.:
print "n======= debut enregistrement =======n";
print ;
print "======= fin enregistrement =======n";
}
}
quand je le lance avec un fichier de log en argument et que je le
redirige vers le fichier toto voici ce qu'il me donne (extrait):
-----------------------------------------------------------------
P|1|27098|||LE MITOUARD~FRE [...]
P|1|27098||90067140|LE MITOUARD~FRE [...]
P|1|27098||90067140|LE MITOUARD~FRE [...]
P|1|27006||90067138|LE BRECH~SA [...]
P|1|27006||90067138|LE BRECH~SA [...]
P|1|27098||90067140|LE MITOUARD~FRE [...]
P|1|25277||90067164|TOURNAIRE~AN [...]
ma question est : que vienne faire TOURNAIRE et LE BRECH dans ce
'filtre'?
Il me semble que les lignes avec "TOURNAIRE" et "LE BRECH" ne sont pas des
enregistrements individuels, mais des continuations d'un enregistrement
précédent. Essaie de relancer le programme avec les bornes supplémentaires
("== debut enregistrement ==" et "== fin enregistrement =="). Avec ces
bornes, tu peux mieux séparer les enregistrements individuels.
#!/usr/bin/perl -w use strict; $/="n "; while (<>){ if (/nP|1|d*||d*|LE MITOUARD/){ print ;
Je propose d'ajouter des "bornes visuelles" (sans modifier le critère du filtre!), par ex.:
print "n======= debut enregistrement =======n";
print ;
print "======= fin enregistrement =======n";
} }
quand je le lance avec un fichier de log en argument et que je le redirige vers le fichier toto voici ce qu'il me donne (extrait): ----------------------------------------------------------------- P|1|27098|||LE MITOUARD~FRE [...] P|1|27098||90067140|LE MITOUARD~FRE [...] P|1|27098||90067140|LE MITOUARD~FRE [...] P|1|27006||90067138|LE BRECH~SA [...] P|1|27006||90067138|LE BRECH~SA [...] P|1|27098||90067140|LE MITOUARD~FRE [...] P|1|25277||90067164|TOURNAIRE~AN [...]
ma question est : que vienne faire TOURNAIRE et LE BRECH dans ce 'filtre'?
Il me semble que les lignes avec "TOURNAIRE" et "LE BRECH" ne sont pas des enregistrements individuels, mais des continuations d'un enregistrement précédent. Essaie de relancer le programme avec les bornes supplémentaires ("== debut enregistrement ==" et "== fin enregistrement =="). Avec ces bornes, tu peux mieux séparer les enregistrements individuels.
-- Klaus
Siddharta
merci grace a toi j'ai reussi a isoler le probleme , il fallait mettre "rnrn" sous cygwin pour retrouver l'équivalent à "nn" sous debian, tu avais raison c'est grace a ta delimitation des lignes que je suis arrivé a cette conclusion
Merci encore
merci grace a toi j'ai reussi a isoler le probleme , il fallait mettre
"rnrn" sous cygwin pour retrouver l'équivalent à "nn" sous
debian, tu avais raison c'est grace a ta delimitation des lignes que je
suis arrivé a cette conclusion
merci grace a toi j'ai reussi a isoler le probleme , il fallait mettre "rnrn" sous cygwin pour retrouver l'équivalent à "nn" sous debian, tu avais raison c'est grace a ta delimitation des lignes que je suis arrivé a cette conclusion
Merci encore
Paul Gaborit
À (at) 28 Jul 2005 13:05:11 -0700, "Siddharta" écrivait (wrote):
merci grace a toi j'ai reussi a isoler le probleme , il fallait mettre "rnrn" sous cygwin pour retrouver l'équivalent à "nn" sous debian, tu avais raison c'est grace a ta delimitation des lignes que je suis arrivé a cette conclusion
C'est donc que vous avez configuré cygwin pour utiliser des fichiers textes avec fins de ligne à la Unix et non Windows... Alors que votre fichier de log utilise lui les fins de lignes Windows (soit parce qu'il a été généré directement par Windows soit parce qu'il a été transféré depuis Unix par un outil qui fait la conversion genre FTP en mode texte).
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
merci grace a toi j'ai reussi a isoler le probleme , il fallait mettre
"rnrn" sous cygwin pour retrouver l'équivalent à "nn" sous
debian, tu avais raison c'est grace a ta delimitation des lignes que je
suis arrivé a cette conclusion
C'est donc que vous avez configuré cygwin pour utiliser des fichiers
textes avec fins de ligne à la Unix et non Windows... Alors que votre
fichier de log utilise lui les fins de lignes Windows (soit parce
qu'il a été généré directement par Windows soit parce qu'il a été
transféré depuis Unix par un outil qui fait la conversion genre FTP en
mode texte).
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) 28 Jul 2005 13:05:11 -0700, "Siddharta" écrivait (wrote):
merci grace a toi j'ai reussi a isoler le probleme , il fallait mettre "rnrn" sous cygwin pour retrouver l'équivalent à "nn" sous debian, tu avais raison c'est grace a ta delimitation des lignes que je suis arrivé a cette conclusion
C'est donc que vous avez configuré cygwin pour utiliser des fichiers textes avec fins de ligne à la Unix et non Windows... Alors que votre fichier de log utilise lui les fins de lignes Windows (soit parce qu'il a été généré directement par Windows soit parce qu'il a été transféré depuis Unix par un outil qui fait la conversion genre FTP en mode texte).
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>