doppelte K-Mails aussortieren
Sabbel
Hi,
ist das schon jemanden passiert:
Rechner stürzt bei laufendem K-Mail (oder auch anderen?) ab, danach hat man viele Mails doppelt und dreifach.
Bei wenigen Mails kein Problem, bei ein paar Tausenden (über Jahre gesammelt, man will sie nicht wegwerfen) wirklich doof.
Anbei meine Lösung. Ist nicht schnell, aber funktioniert.
Gruß
Sabbel
################################
#!/usr/bin/perl
use Digest::MD5;
$input = $ARGV[0];
$output = $input.'.tmp';
print $input."\n".$output."\n";
open (in,"$input") or die "Kann Datei $input nicht finden!\n";
while ($line =<in>)
{
if ($line =~ /^From .*@.*/)
{
$anzahl++;
print $anzahl."\n";
}
}
close in;
open (in,"$input");
open (out,">$output");
$oldline='';
while ($line = <in>)
{
if ($line =~ /^From .*@.*/)
{
$laenge = length($message);
$count++;
$md5 = md5($message);
$oldline=$line;
if ($hash{$md5} != 1)
{
print out $message;
$hash{$md5} = 1;
$message = '';
$gesamt = $gesamt + $laenge;
print $count."/".$anzahl.") ".$md5." $laenge - $gesamt\n";
}
else
{
$message = '';
print $count."/".$anzahl.") ".$md5." $laenge - doppelt\n";
}
}
$message = $message.$line;
}
print out $message;
close in;
close out;
open (in,"$output");
open (out,">$input");
while ($line = <in>)
{
print out $line;
}
close in;
close out;
unlink ($output);
sub md5
{
my $inhalt = shift;
$inhalt =~ s/^From.*?\n\n//s;
$inhalt =~ s/<.*?>//gs;
my $md5 = Digest::MD5->new();
$md5->add($inhalt);
my $quersumme = $md5->digest();
$quersumme=unpack("H*", $quersumme);
return $quersumme;
}
Hi,
darf ich das Skript in die Perlbase uebernehmen?
( http://perlbase.xwolf.de )Ciao,
Wolfgang
gerne!
Sorry, für Pseudonym. Mein Programmierstyl erscheint mir selbst nicht immer "schön", mir sind die Ideen wichtiger...
Ich habe mehrere solcher kleinen Helfer/Ideen wie_auch_immer, traue mich meist nur nicht, den Krautsalat zu zeigen, weil ich das meist für unvollständig halte. Meist immer eine Baustelle... ;-)
Gruß
Reiner