Bonjour,
Voilà j'ai ce type de fichier :
chaque ligne definit un lien entre 2 equipements reseau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 "10.23.131.173" -- "10.23.131.205" "10.23.131.173" -- "10.23.129.27" "10.23.131.173" -- "10.23.129.59" "10.23.131.205" -- "10.23.131.173" "10.23.131.205" -- "10.23.129.26" "10.23.131.205" -- "10.23.129.58"
Je souhaite supprimer les lignes redondantes, comme par ex
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part A -- Bqui définissent 2 fois le meme lien, et n'en laisser qu'une seule des 2. (les liens sont définis au max 2 fois)
Code : Sélectionner tout - Visualiser dans une fenêtre à part B -- A
J'ai codé ça :
mais ca me supprime toutes les lignes.... ?!
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 $fichier1 = "$dirGrapheComplet/Graphe.dot"; $fichier2 = "$dirGrapheComplet/GrapheSansDoublon.dot"; #On ouvre le fichier à modifier : open(AMODIFER,"$fichier1") || die "Pb a l'ouverture de $fichier1 !" ; #On ouvre le fichier temporaire et on le crée si necessaire : open(TEMPORAIRE,">$fichier2") || die "Pb a l'ouverture de $fichier2 !" ; # Pour chaque ligne du fichier à modifier on l'inscrit dans le fichier temporaire, # sauf si elle correspond au critère de la ou les lignes à supprimer. while(<AMODIFER>) { chomp ; if ($_ =~ /^\s+"([0-9.\/]*)"\s\-\-\s"([0-9.\/]*)"/) { $ip1 = $1 ; $ip2 = $2 ; print "ip1 : $ip1\tip2 : $ip2\n" ; } elsif ($_ =~ /^\s+"$ip2"\s\-\-\s"$ip1"/) { # ligne redondante a supprimer print "a supp :\n$_\n" ; next ; } else { print TEMPORAIRE "$_\n" ; } }
merci de votre aide
Partager