Удалить дубли - 80кк строк

S
На сайте с 26.05.2010
Offline
37
#11
leo3331:
Здравствуйте, чем можно удалить дубли по строкам?
В файле 80кк ключевиков.

Прошу отписать если решите данный вопрос.

Пока могу удалять дубли только с 5-10кк.

AF
На сайте с 08.10.2010
Offline
75
#12

textpipepro, выбираете в меню слева удалить -> дубликаты строк

ps берет любой размер файла

firacet
На сайте с 23.07.2008
Offline
68
#13

Есть самопис на c# который легко обрабатывает файлы по 2 гига. быстро и надежно )

Но для 2гб файлов нужна х64 винда и памяти поболее 4 гб.

вот прога http://cl.ly/302B03000z1N061J0o2h ( не помню, вроде она скомпилена под x86, если нужна будет под x64 скажите )

она берет строки из файла data ( без расширения )

и создает data-unique

для работу нужен .NET

Ну или кому сорцы нужны, вот :

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace unique
{
class Program
{
static void Main(string[] args)
{
Encoding cp1251 = Encoding.GetEncoding(1251);
HashSet<String> hash = new HashSet<String>();
string line;

Console.Write("Read : ");
StreamReader file = new StreamReader(@"./data",cp1251);
while ((line = file.ReadLine()) != null)
{
hash.Add(line);
}
file.Close();

Console.Write("OK\nWrite: ");

StreamWriter filew = new StreamWriter(@"./data-unique",false,cp1251);
foreach (String hval in hash)
{
filew.WriteLine(hval);
}
Console.Write("OK\n");

}
}
}
Сбылись мечты народный: Мир-Труд-Май
bmwm3
На сайте с 21.10.2009
Offline
35
#14

а чем вам этот вариант не нравится ?

<?php file_put_contents(ok.txt , array_unique(file('файл.txt'))); ?>

ставьте в php.ini много памяти и го

тс, ты так и не сказал сколько файл весит

Лучше решение под даттинг трафик!!!! (http://tinyurl.com/39lto3z) авто постинг в форумы(все движки)
BredoGen.
На сайте с 19.10.2009
Offline
98
#15
bmwm3:
а чем вам этот вариант не нравится ?

<?php file_put_contents(ok.txt , array_unique(file('файл.txt'))); ?>


ставьте в php.ini много памяти и го

тс, ты так и не сказал сколько файл весит

Может просто не хватить памяти для считывания всего файла в массив.

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

Выложу свой консольный вариант вечером, если найду.

[Удален]
#16
Vadya:
Самому не доводилось испытывать, но в закладках торчит этот метод: /ru/forum/comment/3956196

Самый скоростной и действенный, но нужен Линух, а у автора Вынь.

Ezekiel
На сайте с 11.08.2010
Offline
28
#17

cat source.txt | sort | uniq > result.txt

Это именно оно.

Если у ТСа Винда - выход есть. GNU CoreUtils Win32

Обмен WebMoney (http://bit.ly/kqBOlV) Продам инвайт на Хабр (http://www.plati.ru/asp/pay.asp?idd=1529255)
BredoGen.
На сайте с 19.10.2009
Offline
98
#18

Нашел свой вариант на C++.

Консольная программа. Файл в 1кк строк (взят с newox.ru/free_base.php) обрабатывает в 3 раза быстрее варианта cat & sort & uniq.

Проверял на загруженной машине с 512RAM, камень селероновский. То есть понятно, что работать может намного быстрее.

Если еще нужно - могу скомпилить под винду или даже в приличный гуй обернуть.

BredoGen. добавил 06.12.2010 в 14:13

Как поведет себя с 80кк - без понятия.

Ezekiel:
cat source.txt | sort | uniq > result.txt

Это именно оно.
Если у ТСа Винда - выход есть. GNU CoreUtils Win32

Винда загнется еще на cat, с большей долей вероятности :)

T
На сайте с 06.11.2009
Offline
24
#19
BredoGen.:
Может просто не хватить памяти для считывания всего файла в массив.
Лучше считывать построчно, тогда останется надежда, что памяти хватит на массив с уникальными строками.

построчно смысл теряется

считаешь одну строку, а с чем сравнивать её будешь?

на след.строке предыдущая уже забыта, иначе теряется смысл слова "построчно"

cat source.txt | sort | uniq > result.txt

это долго

у меня perl-скрипт работает на линухе через хэши - за секунду из ляма выкидывает лишнее (русские кеи тоже обрабатывает)

с бОльшим кол-вом кеев просто не приходилось сталкиваться

кидай файл, посмотрим, сколько займёт

покупаю худеющий ру-траф в любых кол-вах от $15 за кило | стоимость смс на номер (http://stoimost-sms.ru) | мой опыт работы с секс-шопами (/ru/forum/552912)
BredoGen.
На сайте с 19.10.2009
Offline
98
#20
terramona:
построчно смысл теряется
считаешь одну строку, а с чем сравнивать её будешь?
на след.строке предыдущая уже забыта, иначе теряется смысл слова "построчно"

Хранишь массив с хешами в памяти. Читаешь прострочно и сравниваешь. В чем проблема?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий