Page 1 sur 1
[..] Recherche doublons et suppression
Posté : mer. 19 mars 2014 22:27
par shadsnob
Bonjour j'essaye de créer un script qui permet de supprimer les doublons d'un fichier et l'autre fichier qui change de contenu pour refaire la recherche
A partir de plusieurs fichiers j'ai un fichier ou tout les données sont écrite mais il peux avoir des doublons des que je le remplie
Code : Tout sélectionner
$fichier = @ScriptDir&"\host.txt"
$fichier2 = @ScriptDir&"\hosts.txt"
Local $as_Body, $as_Bodya
_FileReadToArray($fichier, $as_Body)
_FileReadToArray($fichier2, $as_Bodya)
For $j = 1 to $as_Body
$line = FileReadLine($fichier,$j)
$drapeau = False
For $k = 1 to $as_Bodya
$line2 = FileReadLine($fichier2,$k)
If ($line <> $line2) Then
$drapeau = True
ExitLoop
EndIf
Next
Next
Re: recherche doublons et suppression [..]
Posté : mer. 19 mars 2014 22:46
par jguinch
euh, j'ai pas vraiment compris l'énoncé...
Tu veux supprimer les lignes qui sont en double dans un fichier ? Dans deux fichiers ? Entre les deux fichiers ?
Edit : j'ai modifié le titre de ton topic pour qu'il soit conforme aux règles de présentation d'un message. Merci d'y penser à l'avenir (j'ai été indulgent, je suis fatigué)
recherche doublons et suppression [..] =>
[..] Recherche doublons et suppression
Re: [..] Recherche doublons et suppression
Posté : jeu. 20 mars 2014 16:39
par shadsnob
Je télécharge des fichiers 6 au total je supprime tout les espaces, commentaire, ligne vide pour reformater correctement le host.
► Afficher le texte
Code : Tout sélectionner
#include <InetConstants.au3>
#include <Array.au3>
#include <File.au3>
dim $host[7]
$host[0] = "http://www.malwaredomainlist.com/hostslist/hosts.txt"
; etc host[...] jusqu’à 6
For $i = 0 to 6
$fichier = @ScriptDir&"\host.txt"
$fichier2 = @ScriptDir&"\hosts.txt"
$a = "C:\Windows\System32\drivers\etc\hosts2"
$hDownload = INetGet($host[$i], $fichier, $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND)
InetClose($hDownload)
;$c = FileRead($fichier)
Local $aArray = 0
_FileReadToArray($fichier,$aArray)
For $j = 1 to $aArray[0]
$fl = StringStripWS($aArray[$j],8)
If StringInStr($fl,"0.0.0.0",2) <> 0 Then
$fl = StringReplace($fl,"0.0.0.0","127.0.0.1")
EndIf
If StringInStr($fl,"#127.0.0.1",2) <> 0 Then
$fl = StringReplace($fl,"#127.0.0.1","127.0.0.1")
EndIf
If StringInStr($b,"#",2) <> 0 Then
$fl = StringReplace($fl,$fl,"")
EndIf
$fl = StringReplace($fl,"127.0.0.1","127.0.0.1 ")
If ($fl <> "") Then
FileWriteLine($a,$fl)
EndIf
Next
Next
Après je regarde si le fichier que je lis n'a pas des doublons avec le host j'ajoute que ceux ki ne sont pas dans la liste par ordre alpha
► Afficher le texte
Code : Tout sélectionner
#include <InetConstants.au3>
#include <Array.au3>
#include <File.au3>
$a = "C:\Windows\System32\drivers\etc\hosts2"
$t = "C:\Windows\System32\drivers\etc\hosts3"
Local $aArray = 0
_FileReadToArray($a,$aArray)
Local $Tableau[$aArray[0]]
$Var = -1
For $j = 1 to $aArray[0]
$b = FileReadLine($a,$j)
If StringInStr($b,"#127.0.0.1",2) <> 0 Then
$b = StringReplace($b,"#127.0.0.1","127.0.0.1")
EndIf
If StringInStr($b,"#",2) <> 0 Then
$b = StringReplace($b,$b,"")
EndIf
If ($b <> "") Then
$b = StringReplace($b,"127.0.0.1","127.0.0.1 ")
$Tableau[$Var+1] = $b
$Var += 1
;FileWriteLine($t,$b)
EndIf
Next
_ArraySort($Tableau)
_ArrayDisplay($Tableau, "$aArray Unique")
_FileWriteFromArray($t, $Tableau)
Re: [..] Recherche doublons et suppression
Posté : jeu. 20 mars 2014 17:22
par mikell
► Afficher le textefichier de test
Code : Tout sélectionner
# MalwareDomainList.com Hosts List #
# http://www.malwaredomainlist.com/hostslist/hosts.txt #
# Last updated: Thu, 20 Mar 14 15:32:31 +0000 #
#127.0.0.1 localhost1
0.0.0.0 localhost2
127.0.0.1 localhost
127.0.0.1 00398d0.netsolhost.com
127.0.0.1 localhost
127.0.0.1 0koryu0.easter.ne.jp
127.0.0.1 1.michaelwilsonmusic.com
127.0.0.1 109-204-26-16.netconnexion.managedbroadband.co.uk
127.0.0.1 11.lamarianella.info
127.0.0.1 1364ih5d6.ni.net.tr
127.0.0.1 197.242.148.159-static.reverse.softlayer.com
127.0.0.1 199.193.232.43-static.reverse.softlayer.com
127.0.0.1 1k.pl
► Afficher le texte
Code : Tout sélectionner
#include <Array.au3>
; INetGet("http://www.malwaredomainlist.com/hostslist/hosts.txt", "1.txt")
$file = FileRead("1.txt")
$lines = StringRegExp($file, '(?m)(^#?\d.+)\R?', 3)
For $j = 0 to UBound($lines)-1
$lines[$j] = StringRegExpReplace($lines[$j], '#?(127.0.0.1|0.0.0.0)\s+', "127.0.0.1 ")
Next
_ArrayDisplay($lines)
$b = _ArrayUnique($lines)
_ArrayDisplay($b)
Re: [..] Recherche doublons et suppression
Posté : jeu. 20 mars 2014 17:50
par shadsnob
je l'avais tester mais j'arrive pas a intégrer _ArrayUnique() dans le programme et voir l'alléger car quand je lance tout les hosts cela rend plus de temps que par exemple le logiciel hostman
Re: [..] Recherche doublons et suppression
Posté : jeu. 20 mars 2014 17:52
par mikell
Je viens d'éditer, regarde l'exemple
Re: [..] Recherche doublons et suppression
Posté : jeu. 20 mars 2014 18:48
par shadsnob
Sa marche mais je suis en train de modifier ton code pour que je puisse utiliser inetget qui me permet de récupérer les fichiers comme ton 1.txt et a la fin de l'assemblage de tous les ineget en un seul fichier je fais la fin du code