Bonjour à tous.
j'ais réaliser un script qui analyse un fichier de maillog pour en extraire diverses informations sous le format @ip|login|e-mail|nom|prenom pour les écrire dans un deuxiéme fichier qui servire a traiter les données pour les rentrer dans ne bases de données. Dans ce deuxiéme fichier j'ais des lignes ce qui est dut a l'analyse du maillog.
Ma question est simple :
Comment remplacer les lignes identiques de mon fichier par une seul ligne ? ?
Je m'enbrouille dans me reflexion a chaque fois
Je sait que cela doit être simple mais je n'arrive pas a trouver une solution simple et efficace
Voila mon fichier analysant le maillog j'aimerais intégrer le remplacement des lignes identiques dans ce code
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 #!/usr/bin/perl use DBI(); #Connexion a la bdd $dbh = DBI->connect("DBI:mysql:database=CRI;host=localhost","user","mdp"); $file='mailogepure'; open(FICH, $file) or die "Ouverture de $file impossible : $!\n"; #$file2='>user_adresseip'; #open(FICH2, $file2) or die "Ouverture de $file2 impossible : $!\n"; $fileout='>user_adresseip'; open(FICHOUT, $fileout) or die "Ouverture de $fileout impossible : $!\n"; $query="select ip from computer"; $sth = $dbh->prepare($query); $sth->execute(); my $i=0; my $j=0; my $k=0; my $l=0; my $mail=""; my @adresse; while($lines = <FICH>) { if ($lines=~ /.+Passed CLEAN, \[(\d+\.\d+\.\d+\.\d+)\] \[\d+\.\d+\.\d+\.\d+\] <(.+?)\@fourniseur.com> -> .+/) { $adresse=$1; $user=$2; $mail="$user\@fourniseur.com"; $nom=""; $prenom=""; if($user=~/(.+)\.(.+)/) { $nom=$2; $prenom=$1; } print(FICHOUT "$adresse|$user|$mail|$nom|$prenom\n"); } if ($lines=~ /.+Passed CLEAN, \[\d+\.\d+\.\d+\.\d+\]\[(\d+\.\d+\.\d+\.\d+)\] .+ -> <(.+?)\@fourniseur.com>.+/) { $adresse=$1; $user=$2; $mail="$user\@fourniseur.com"; $nom=""; $prenom=""; if($user=~/(.+)\.(.+)/) { $nom=$2; $prenom=$1; } print(FICHOUT "$adresse|$user|$mail|$nom|$prenom\n"); } } close(FICH); #close(FICH2); close(FICHOUT);
Partager