Bonjour,

Voilà j'ai ce type de fichier :

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"
chaque ligne definit un lien entre 2 equipements reseau.

Je souhaite supprimer les lignes redondantes, comme par ex
et qui 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)

J'ai codé ça :

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" ;
	}
}
mais ca me supprime toutes les lignes.... ?!
merci de votre aide