[Perl] problème mise au point regexp
Eric DUVAL
eduval at ligfy.fr
Dim 26 Mar 22:15:44 CEST 2017
Bonjour,
Je dois anonymiser un fichier contenant des lignes de la forme:
(STRING == je ne peux pas transmettre les vraies données)
Aucune des lignes ne se ressemblent. Cette ligne est donnée à titre
d'exemple.
Le nombre de var=value peut varier de 0 à n.
file.log:Mar 21 19:19:57 STRING1 STRING2 "STRING3" - -
[21/Mar/2017:19:19:57 +0100] "/uri?var1=value1&var2=value2&var3=value3"
200 0.037-0.033=0.004 POST 484 - "STRING4" "STRING5" "STRING6"
Et ressortir avec des lignes de la forme:
file.log:Mar 21 19:19:57 STRING1 STRING2 "STRING3" - -
[21/Mar/2017:19:19:57 +0100] "/uri?var1=xxx&var2=xxx&var3=xxx" 200
0.037-0.033=0.004 POST 484 - "STRING4" "STRING5" "STRING6"
ou de la forme
file.log:Mar 21 19:19:57 STRING1 STRING2 "STRING3" - -
[21/Mar/2017:19:19:57 +0100] "/uri" 200 0.037-0.033=0.004 POST 484 -
"STRING4" "STRING5" "STRING6"
Après de multiples tentatives, je n'arrive à mettre au point
l'expression régulière qui va bien :-(
Le code perl est de la forme:
(J'ai séparé les expressions pour la clarté de l'exemple)
[...]
while( <in> ) {
s/(\?.*)=.*([&\"])/${1}=xxx${2}/;
s/(&.*)=.*([&\"])/${1}=xxx${2}/;
}
[...]
J'ai essayé des expressions plus ou moins complexes mais sans résultats.
Merci pour l'aide.
Eric.
Plus d'informations sur la liste de diffusion Perl