как выгоднее убрать повторки ?

tristram

Guest
как выгоднее убрать повторки ?

тема себя изчерпала, т.к программа все выполнела

вообщем у меня файл на 31,6 МБ (!), в нем надо убрать повторящиеся строки (один раз, т.е покрасил и забыл). из-за того что размер очень велик стандартно не подойдешь! подскажите варианты решения!

-~{}~ 18.07.04 14:58:

все те же базы icq, обьеденил скриптом 5 баз, хочу убрать совпадения.
 

neko

tеam neko
один раз, т.е покрасил и забыл
ты совсем глупый-глупый?
с одного раза не понимаешь?

file()
foreach

или
fgets()

такой скрипт можно на скорость писать

-~{}~ 18.07.04 15:07:

программистам время от времени приходится писать одноразовые программы. т.е. такие -- которые будут выполнены 1 раз и после этого про них можно забыть.

например, такие программы часто пишутся чтобы сделать конвертация между какими-нибудь форматами.

так вот "хорошесть" такой одноразовой программы, определяется временем, которую программист на ее написание потратил.

если ты написал программу, за одну минуту -- это очень и очень хорошая программа.

а если за 10 минут, предварительно потратив пол часа на дуратские переписки на форуме, то программа отвратительная как бы быстро она не работала.

учись реально оценивать время.
 

tristram

Guest
:D пока мы тут перетираем "хорошая" программа пашет!

-~{}~ 18.07.04 15:12:

так ты не обьяснил как же повторки искать я юзаю
$f = fopen("full_icq_opt.sql","w");
fwrite($f,join("",array_unique(file("full_icq.sql"))));
fclose($f);
 

neko

tеam neko
ну и не компостируй мозги тогда, раз пашет

все равно чтобы найти различия тебе надо все записи где-то хранить
можно хранить их в массиве
можно хранить в файле, и каждый раз пробегать все файлы которые у тебя есть, но это дурная идея
 

tristram

Guest
да не.. файлы я уже обьеденил.
!!! я думаю будет пару дней пахать !!! а мне вечером выключать комп!
 

neko

tеam neko
ну и нормально ты делаешь

правда я бы делал fgets() и in_array()
т.к. array_unique очевидно создает копию массива
 

tristram

Guest
я думал о том чтоб снимать md5 со строк, класть в строку, а потом делать strstr или ereg. но мне кажется это еще дольшею. а ?
 

neko

tеam neko
конечно дольше

причем, массивные функции итак делают весьма похожую операцию и явно быстрее чем ты

вопщем делай как я сказал, пока нет идей лучше
 

Olorin

Guest
имхо куда быстрее импортировать этот файл в MySQL, в нем сделать select distinct..., а потом экспортировать обратно:)
 

voodoo

Новичок
`sort file | uniq > newfile`

а file на 36 мегах -- эт клево.
особенно если мемори лимит.
 

tristram

Guest
кому как.. моя прога за 15 мин управилась :)

-~{}~ 18.07.04 15:52:

я убрал мемори лимит.
 

TuBu

Guest
если под *nix
sort -u file > newfile

что как мне кажется есть лучше чем sort file | uniq
 
Сверху