PDA

Просмотр полной версии : Нужно удалить повторы uins;password ?


9822
26.06.2007, 19:30
вобщем нужна мне была какта прогу которая удаляет дубликаты но без всяких там фич которыми я не когда пользоватся не буду, и кто знает вдруг там умная зараза сидит, вобщем софту не очень верю и теперь все сам пишу.

может комуто тоже пригодится уборщик повторных асек

лично у меня 10к асек из них 40% повторы, у меня не выдержали нервы искать и в ручную удалять :)

#include <stdio.h>
#include<string.h>
void main()
{
char source[]="c:\\uins.txt";
char dest[]="c:\\done.txt";
char buf[256];
char tmpBuf[256];
FILE *src;
FILE *tmp;
FILE *dst;
int flag;
src=fopen(source,"rt");
dst=fopen(dest,"w+t");
fgets(buf,256,src);
while(!feof(src))
{
flag=1;
tmp=fopen(source,"rt");
fgets(tmpBuf,256,tmp);
while(ftell(tmp)<ftell(src)&&flag)
{
if(strcmp(tmpBuf,buf)==0)
flag=0;
else
fgets(tmpBuf,256,tmp);
}
if(flag)
{
fputs(buf,dst);
}
fclose(tmp);
fgets(buf,256,src);
}
flushall();
getchar();
}

все просто создаем uins.txt (тут где вы думаете что есть дубликаты)

все повторы будут удаленны и нормальные аси запишутся тут
done.txt

вобщем все на сегодня :)

C!klodoL
26.06.2007, 20:04
да вроде можно сделать тоже самое duppkill

dscan
26.06.2007, 21:08
paptor тоже неплохо с дублями работает...

ch[@]ch
26.06.2007, 21:22
вобщем нужна мне была какта прогу которая удаляет дубликаты но без всяких там фич которыми я не когда пользоватся не буду, и кто знает вдруг там умная зараза сидит, вобщем софту не очень верю и теперь все сам пишу.

может комуто тоже пригодится уборщик повторных асек

лично у меня 10к асек из них 40% повторы, у меня не выдержали нервы искать и в ручную удалять :)

#include <stdio.h>
#include<string.h>
void main()
{
char source[]="c:\\uins.txt";
char dest[]="c:\\done.txt";
char buf[256];
char tmpBuf[256];
FILE *src;
FILE *tmp;
FILE *dst;
int flag;
src=fopen(source,"rt");
dst=fopen(dest,"w+t");
fgets(buf,256,src);
while(!feof(src))
{
flag=1;
tmp=fopen(source,"rt");
fgets(tmpBuf,256,tmp);
while(ftell(tmp)<ftell(src)&&flag)
{
if(strcmp(tmpBuf,buf)==0)
flag=0;
else
fgets(tmpBuf,256,tmp);
}
if(flag)
{
fputs(buf,dst);
}
fclose(tmp);
fgets(buf,256,src);
}
flushall();
getchar();
}

все просто создаем uins.txt (тут где вы думаете что есть дубликаты)

все повторы будут удаленны и нормальные аси запишутся тут
done.txt

вобщем все на сегодня :)
Сори за флуд....а какие у тебя аськи??6* 7* или 8*??

WAR!9G
26.06.2007, 21:33
Сам не раз сталкивался, может кому пригодится реализация этого на дельфе:


procedure TForm1.Button1Click(Sender: TObject);
var
uinpass:TstringList;
begin
uinpass:=TStringList.Create;
uinpass.LoadFromFile('uinpass.txt');
try
uinpass.Sorted:=True;
uinpass.Duplicates:=dupIgnore;
uinpass.LoadFromFile('uinpass.txt');
uinpass.SaveToFile('uinpass_sorted.txt');
finally
uinpass.Free;
end;
end;
end;
end;

9822
26.06.2007, 22:21
ch@ch - 90% это 9 знаки...

да бывает что она типо зависла если там больше 40к уинов но на самом деле она работает... такова не было чтоб зависала у меня пень 4 3.0 интельно 512 ддр
вобщем у меня все работает ;) если хотите добовляете в это код он октрыт для всех :)

C!klodoL
27.06.2007, 03:46
реализация этого на Perl =)
open(incom, "<./in.txt");
@IN = <incom>;
@IN = grep{!$_{$_}++} @IN;
close(incom);

open(out, ">./out.txt");
print out @IN;
close(out);

Deem3n®
27.06.2007, 09:10
less твой инпут файл | sort | uniq > твой оутпут файл

ZeTiX
27.06.2007, 10:37
вот на Perl'е тоже удаляет повторы,давно пользуюсь

#!/usr/bin/perl -w

open(IN, "< UinIN.txt") or die "Can't open file: $!";
open(OUT, "+> UinOut.txt") or die "Can't open file out.txt for writing: $!";

@input = <IN>;
close(IN);
%seen = ();

foreach $item (@input)
{
unless ($seen{$item})
{
$seen{$item} = 1;
print OUT $item;
}
}
close(OUT);

KPOT_f!nd
30.06.2007, 10:11
UAI - Cкачать (http://www.downloads.xclan.ru/soft/UAI.rar) . . . Хороший софт, и не только в ICQ деле. . .