[R] Extraire des infos de fichiers Log.
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Extraire des infos de fichiers Log.
bonjour,
besoin de votre aide... ! je voudrais à partir de deux fichier de Log extraire des informations identique dans les 2 fichier ....
Exemple Log1 : blabla
Log2 : blabla
Identique, écrit les dans un autre fichier !
et sinon pas identique ignore l'information...
Si une âme généreuse peu m'aider.... merci a vous.
besoin de votre aide... ! je voudrais à partir de deux fichier de Log extraire des informations identique dans les 2 fichier ....
Exemple Log1 : blabla
Log2 : blabla
Identique, écrit les dans un autre fichier !
et sinon pas identique ignore l'information...
Si une âme généreuse peu m'aider.... merci a vous.
Modifié en dernier par Tlem le ven. 04 avr. 2008 20:53, modifié 2 fois.
Raison : Ajout d'un titre !!!
Raison : Ajout d'un titre !!!
Re: [..] Extraire des infos de fichiers Log.
Bonjour,
Peut-être en passant par des tableaux :
Peut-être en passant par des tableaux :
Code : Tout sélectionner
#include <file.au3>
Dim $aRecords1
If Not _FileReadToArray("d:\log1.txt",$aRecords1) Then
MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
Dim $aRecords2
If Not _FileReadToArray("d:\log2.txt",$aRecords2) Then
MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
$file = FileOpen("d:\log3.txt", 1)
; Check if file opened for writing OK
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
For $x = 1 to $aRecords1[0]
For $y = 1 to $aRecords2[0]
If $aRecords1[$x]=$aRecords2[$y] then
FileWriteLine($file, $aRecords1[$x])
EndIf
Next
Next
FileClose($file)
Modifié en dernier par alex65 le sam. 29 mars 2008 08:27, modifié 1 fois.
Re: [..]à partir de deux fichier de Log extraire des information
Merci d'avoir répondu
Je n'arrive pas à finir une boucle

Je n'arrive pas à finir une boucle
Code : Tout sélectionner
;~ -----------------------------------------
;~ Corps du programme
;~ -----------------------------------------
;~ Charger le fichier LOG dans un tableau
If Not _FileReadToArray("blabla1.csv", $tableauLOG) Then
MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
If Not _FileReadToArray("blabla2.csv", $tableau1LOG) Then
MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
FileDelete($ficherResultat)
;~ Lecture de toutes les lignes de $tableauLOG
For $x = 1 To $tableauLOG[0]
For $x = 1 To $tableau1LOG[0]
If $tableauLOG[$x]<> $tableau1LOG[$x] = "" Then ContinueLoop
$tableauTMP = StringSplit($tableauLOG[$x], ",")
$tableau1TMP = StringSplit($tableau1LOG[$x], ",")
If $tableauTMP[1] <> $tableau1TMP[1] = "" Then
ContinueLoop
Else
If StringUpper ($tableauTMP[1] and $tableau1TMP[1]) Then
FileWriteLine("test.log",$tableauTMP[1] & ","& $tableauTMP[2] & ","& $tableau1TMP[1])
EndIf
EndIf
Next
Next
Re: [..] Extraire des infos de fichiers Log.
Lorsqu'il y a 2 boucles comme là, il faut préciser le niveau à continueloop, soit 1 par défaut, soit 2.
Par contre, je pense que le fait d'utiliser 2 fois la variable $x aura pour conséquence de ne vérifier que les lignes portant le même numéro !
Par contre, je pense que le fait d'utiliser 2 fois la variable $x aura pour conséquence de ne vérifier que les lignes portant le même numéro !
Modifié en dernier par alex65 le sam. 29 mars 2008 08:29, modifié 1 fois.
Re: [..] Extraire des infos de fichiers Log.
Il faut corriger cette ligne :
par
Code : Tout sélectionner
If $tableauLOG[$x]<> $tableau1LOG[$x] = "" Then ContinueLoop
Code : Tout sélectionner
If $tableauLOG[$x]<> $tableau1LOG[$y] or $tableauLOG[$x]= "" Then ContinueLoop
Modifié en dernier par alex65 le sam. 29 mars 2008 08:30, modifié 1 fois.
Re: [..] Extraire des infos de fichiers Log.
Ou par :
Code : Tout sélectionner
If $tableauLOG[$x]<> $tableau1LOG[$y] or $tableauLOG[$x]= "" Then ContinueLoop 2
Modifié en dernier par alex65 le sam. 29 mars 2008 08:30, modifié 1 fois.
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Extraire des infos de fichiers Log.
Merci de respecter les règles du forum, en mettant un titre clair à vos questions.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Extraire des infos de fichiers Log.
Merci Alex65, je vais faire la correction du script...
Tlem, je ferai plus attention ! merci

Tlem, je ferai plus attention ! merci
Re: [..] Extraire des infos de fichiers Log.
Re
j'ai testé la solution d'alex...
Rien ! il ne se passe rien!
parcontre si je reste avec la solution du départ avec 2 fois la variable $x
j'ai bien un fichier test.log avec les infos des 2 fichiers logs à comparer ! mais la boucle ne s'arrete pas !!
une autre petite idée ? Merci à vous..
bye.

j'ai testé la solution d'alex...
Code : Tout sélectionner
If $tableauLOG[$x]<> $tableau1LOG[$y] or $tableauLOG[$x]= "" Then ContinueLoop
Rien ! il ne se passe rien!
parcontre si je reste avec la solution du départ avec 2 fois la variable $x
Code : Tout sélectionner
If $tableauLOG[$x]<> $tableau1LOG[$x] = "" Then ContinueLoop
une autre petite idée ? Merci à vous..
bye.
Re: [..] Extraire des infos de fichiers Log.
Bonjour,
Je viens de tester ce code :
Il fonctionne sur mon poste mais j'ai peut-être mal compris la question ?
Je viens de tester ce code :
Code : Tout sélectionner
#include <file.au3>
;~ -----------------------------------------
;~ Corps du programme
;~ -----------------------------------------
;~ Charger le fichier LOG dans un tableau
Dim $tableauLOG
If Not _FileReadToArray("blabla1.csv", $tableauLOG) Then
MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
Dim $tableau1LOG
If Not _FileReadToArray("blabla2.csv", $tableau1LOG) Then
MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
;FileDelete($ficherResultat)
;~ Lecture de toutes les lignes de $tableauLOG
For $x = 1 To $tableauLOG[0] ; Boucle 1 - Pour chaque ligne de ce tableau
For $y = 1 To $tableau1LOG[0] ; Boucle 2 - On teste chaque ligne du deuxième
If $tableauLOG[$x]<> $tableau1LOG[$y] or $tableauLOG[$x]= "" Then ContinueLoop ; Si les conditions sont vérifiées, il continue la boucle 2 avec une nouvelle valeur de y
; Avec ContinueLoop 2, il continuerait la boucle 1 avec une nouvelle valeur de x
$tableauTMP = StringSplit($tableauLOG[$x], ",")
$tableau1TMP = StringSplit($tableau1LOG[$x], ",")
If $tableauTMP[1] <> $tableau1TMP[1] or $tableauTMP[1]= "" Then
ContinueLoop ; Si les conditions sont vérifiées, il continue la boucle 2 avec une nouvelle valeur de y
; Avec ContinueLoop 2, il continuerait la boucle 1 avec une nouvelle valeur de x
Else
If StringUpper ($tableauTMP[1] and $tableau1TMP[1]) Then
FileWriteLine("test.log",$tableauTMP[1] & ","& $tableauTMP[2] & ","& $tableau1TMP[1]) ; Attention, si les lignes ne contiennent pas de virgules => Erreur
EndIf
EndIf
Next
Next
Re: [..] Extraire des infos de fichiers Log.
Merci Alex...
Je me suis mal exprimée...
voilà ce que je cherche à faire... j'ai 2 fichiers logs
je voudrais constituer en un seul fichier log "test.log" et ensuite faire la comparaison d'information à l'intérieur de ce fichier!!... mais peux etre que je me complique la vie...
mon 1er fichier log1 à les informations suivante: "2colonne"
Marie, Nantes
Pierre, Paris
Marc, Brest
mon 2ème fichier à : "une seule colonne"
Marie
Pierre
Jean
comparaison Marie OK, Pierre OK, Jean NON
alors j'écris fichier "test.log" uniquement les infos suivantes
Marie, Nantes
Pierre, Paris
Mais peux etre que je me complique la vie et qu'il existe une solution autre !!


Je me suis mal exprimée...
voilà ce que je cherche à faire... j'ai 2 fichiers logs
je voudrais constituer en un seul fichier log "test.log" et ensuite faire la comparaison d'information à l'intérieur de ce fichier!!... mais peux etre que je me complique la vie...
mon 1er fichier log1 à les informations suivante: "2colonne"
Marie, Nantes
Pierre, Paris
Marc, Brest
mon 2ème fichier à : "une seule colonne"
Marie
Pierre
Jean
comparaison Marie OK, Pierre OK, Jean NON
alors j'écris fichier "test.log" uniquement les infos suivantes
Marie, Nantes
Pierre, Paris
Mais peux etre que je me complique la vie et qu'il existe une solution autre !!

Re: [..] Extraire des infos de fichiers Log.
Alors, en reprenant les lignes du dessus on peu faire comme ça :
Code : Tout sélectionner
#include <file.au3>
;~ -----------------------------------------
;~ Corps du programme
;~ -----------------------------------------
;~ Charger le fichier LOG dans un tableau
Dim $tableauLOG
If Not _FileReadToArray("blabla1.csv", $tableauLOG) Then
MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
Dim $tableau1LOG
If Not _FileReadToArray("blabla2.csv", $tableau1LOG) Then
MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
;~ Lecture de toutes les lignes de $tableauLOG
For $x = 1 To $tableauLOG[0]
$name=StringSplit($tableauLOG[$x], ",")
For $y = 1 To $tableau1LOG[0]
If $name[1] = $tableau1LOG[$y] and $name<> "" Then
FileWriteLine("test.log",$tableauLOG[$x])
EndIf
Next
Next
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Extraire des infos de fichiers Log.
On peut aussi faire ceci :
Le code est plus long à cause du contrôle de la création du fichier Log3.log et des déclarations.
Cette partie peut être supprimée si : 'Même pas peur'
Le code épuré donne ceci :
Code : Tout sélectionner
#include <file.au3>
#include <Array.au3>
Dim $aArray1, $aArray2
Dim $Fic1 = "Log1.log"
Dim $Fic2 = "Log2.log"
Dim $Fic3 = "Log3.log"
If FileExists($Fic3) Then FileDelete($Fic3)
If Not _FileReadToArray($Fic1,$aArray1) Then
MsgBox(4096,"Erreur", "Erreur de lecture du fichier " & $Fic1)
Exit
EndIf
If Not _FileReadToArray($Fic2,$aArray2) Then
MsgBox(4096,"Erreur", "Erreur de lecture du fichier " & $Fic2)
Exit
EndIf
$File = FileOpen($Fic3, 1)
If $File = -1 Then
MsgBox(0, "Erreur", "Impossible de créer le fichier de destination.")
Exit
EndIf
For $i = 1 To $aArray2[0]
$Pos = _ArraySearch ($aArray1, $aArray2[$i], 0, 0, 0, True)
If $Pos <> -1 Then FileWriteLine($file, $aArray1[$Pos])
Next
FileClose($file)
Cette partie peut être supprimée si : 'Même pas peur'

Le code épuré donne ceci :
Code : Tout sélectionner
#include <file.au3>
#include <Array.au3>
Dim $aArray1, $aArray2
If Not _FileReadToArray("Log1.log",$aArray1) Then
MsgBox(4096,"Erreur", "Erreur de lecture du fichier Log1.log")
Exit
EndIf
If Not _FileReadToArray("Log2.log",$aArray2) Then
MsgBox(4096,"Erreur", "Erreur de lecture du fichier Log2.log")
Exit
EndIf
For $i = 1 To $aArray2[0]
$Pos = _ArraySearch ($aArray1, $aArray2[$i], 0, 0, 0, True)
If $Pos <> -1 Then FileWriteLine("Log3.log", $aArray1[$Pos])
Next
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Extraire des infos de fichiers Log.
Oui merci Tlem, c'est mieux, je ne connaissais pas la fonction.
Par contre, comment on peut éviter l'inscription de la ligne si un prénom est égal à une ville ?
Par contre, comment on peut éviter l'inscription de la ligne si un prénom est égal à une ville ?
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Extraire des infos de fichiers Log.
Modifiez la dernière partie du code comme ceci :
Code : Tout sélectionner
For $i = 1 To $aArray2[0]
$Pos = _ArraySearch ($aArray1, $aArray2[$i], 0, 0, 0, True)
If $Pos <> -1 Then
$name=StringSplit($aArray1[$Pos], ",")
If $name[1] = $aArray2[$i] Then FileWriteLine("Log3.log", $aArray1[$Pos])
EndIf
Next
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Extraire des infos de fichiers Log.
Et bien oui, tout simplement... Merci encore Tlem 
