Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Помогите решить на чём писать.

Ответить
Настройки темы
Разное - Помогите решить на чём писать.

Пользователь


Сообщения: 58
Благодарности: 1

Профиль | Отправить PM | Цитировать


И так у меня есть задачя:
- у нас есть два файла, в формате txt и каждый размеров 15 гиг. В них в столбик идут пароли, около 1,5 миллиарда в каждом. Задача: нужно проанализировать эти файлы на наличие одинаковых строчек (то есть построчное чтение из двух фалов по 1 строке и каждого за 1 такт) и если строки разные то записать из оби в файл out.txt а если одинаковые то удалить одну из них а вторую записать в тотже файл.
Знания языков программирования по шкале от 0 до 3 (где 0 - это ничего, а 3 - пишу программы, средние):
- pascal (1)
- С++ (1)
- .bat (2)
Я хочю совет: на каком языке мне лучше это писать, и какой учить.???

Отправлено: 15:18, 20-04-2014

 

Пользователь


Сообщения: 61
Благодарности: 6

Профиль | Отправить PM | Цитировать


Это будет очень долго с файлами
Цитата Eugene Shugaev:
каждый размеров 15 гиг. »
На Delphi есть готовые программы с таким функционалом, например "workwithtext by alex ey" (Эта программа работает з базами паролей для брута, ссылку не даю так как не знаю запрещено ли здесь давать ссылки на хак-программы)

Отправлено: 15:43, 20-04-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 58
Благодарности: 1

Профиль | Отправить PM | Цитировать


Да спасибо)) Дельна прога, только в коментариях написано что она с трудом базы на 300 мб кушает, а тут на 30 гб((((

Отправлено: 15:54, 20-04-2014 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Eugene Shugaev, выложите образцы исходных файлов (небольшого размера, в той же кодировке, что и оригинальные) и результирующего.

Отправлено: 18:17, 20-04-2014 | #4

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


имхо комбинация sort http://www.opennet.ru/man.shtml?topi...A%C1%D4%D8+man и uniq http://www.opennet.ru/man.shtml?topi...ry=1&russian=0 справится на ура

Отправлено: 21:20, 22-04-2014 | #5


Новый участник


Сообщения: 7
Благодарности: 3

Профиль | Отправить PM | Цитировать


Конечно слегка оффтоп, но еслиб передо мной стояла такая задача, я бы ударил по ней всей мощью perl. Ну или да на bash как господин pva предлагает, тем более что в bashe инструментов предостаточно для таких вот задач. А С++ или Pascal для такой фигни не стал бы использовать, если конечно не нужно эту задачу решать часто и быстро.

Вот покурил минут 5 вот такой код:
Код: Выделить весь код
#find_eq.pl 

my $fn1 = "file1_15gb.txt"; #имя первого файла
my $fn2 = "file2_15gb.txt"; #имя второго файла
my $outfile = "out.txt"; #имя выходного файла

open FILE1,"$fn1" or die; #открываем файлы на чтение
open FILE2,"$fn2" or die;   
open OUT,">$outfile" or die; #открываем выходной файл на запись

while (not eof) {  #выполняем пока не конец одного из фалов
 $str1 = <FILE1>; # читайем строчки  их фалов в переменные str1 и str2 
 $str2 = <FILE2>; 
 chomp($str1); # убираем символы конца строки
 chomp($str2);

 #если строки не совпадают то пишем на выход
 #с указанием из какого файла все прочитано
 if (not($str1 eq $str2)){
  print OUT "$fn1 - $str1\n";
  print OUT "$fn2 - $str2\n";
 } 
}
мощи Perl конечно в коде немного, и на файлах он 15 гиговых не проверялся, но думается мне работать будет, но долго, зато написано за 5 минут.

Последний раз редактировалось Varox, 19-06-2014 в 15:14.


Отправлено: 14:35, 19-06-2014 | #6


Аватара для navuhodonosor

Новый участник


Сообщения: 35
Благодарности: 5

Профиль | Отправить PM | Цитировать


Не совсем понятно, тебе нужно сравнить строчки в принципе (т.е. 1 строка 1 файла = 1 строке 2 файла и тд.) или надо сравнить так (1 строка 1 файла = любой строке 2 файла)?
Ну я не очень силен в разработке, но приходилось большие файлы обрабатывать и сравнивать, правда не такие большие (до 4 ГБ).
Если вариант 1 нужен то по барабану вообще, главное читать построчно.
Если вариант 2, то главное не pascal, я бы например использовал какой-нибудь dictionary и туда загрузил все из первого а потом второй построчно проверял, механизм поиска в словаре довольно быстро работает.

Отправлено: 15:27, 01-07-2014 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата navuhodonosor:
Если вариант 2, то главное не pascal, я бы например использовал какой-нибудь dictionary и туда загрузил все из первого а потом второй построчно проверял, механизм поиска в словаре довольно быстро работает. »
navuhodonosor, с такими объёмами:
Цитата Eugene Shugaev:
и каждый размеров 15 гиг. »
— никаких словарей. Только базы данных и запросы.

Отправлено: 02:30, 02-07-2014 | #8


Аватара для navuhodonosor

Новый участник


Сообщения: 35
Благодарности: 5

Профиль | Отправить PM | Цитировать


Согласен, БД для этого и нужны. Но иногда задачи ставятся так, что БД применить нельзя, мне приходилось писать макросы на VBA, как раз потому, что Excel не позволял импортировать файлы, слишком много значений, больше 1048576. Как раз тут меня и выручили словари, делал их несколько, в каждом было порядка миллиона ключей, поиск по словарю очень порадовал))) в итоге вся обработка средствами VBA занимала около 5 минут.
По поводу миллиардов строк данных, конечно не пробовал, не знаю способен ли словарь поместить такое и какой нужен для этого объем ОЗУ.

Отправлено: 09:52, 02-07-2014 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата navuhodonosor:
Но иногда задачи ставятся так, что БД применить нельзя, »
Я потому и пытался добиться от автора образцов текстовых файлов:
Цитата Iska:
Eugene Shugaev, выложите образцы исходных файлов (небольшого размера, в той же кодировке, что и оригинальные) и результирующего. »
дабы оценить возможность применения OLE DB Text Driver или Log Parser.

Цитата navuhodonosor:
По поводу миллиардов строк данных, конечно не пробовал, не знаю способен ли словарь поместить такое и какой нужен для этого объем ОЗУ. »
Очень условно можно считать по количеству символов. То есть, если принять, что мы используем x64-разрядную ОС, соответствующий инструментарий — мы в любом случае ограничены сверху объёмом свободной памяти. Всё, что больше — пойдёт вытесняться в виртуальную память с соответствующим диким «проседанием» производительности. Посему — БД. Даже если надо будет предварительно создать эту БД и конвертировать текстовые файлы в её таблицы.

Отправлено: 10:17, 02-07-2014 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Помогите решить на чём писать.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Помогите решить задачу на Си friter Программирование и базы данных 16 21-01-2019 19:17
C/C++ - [решено] Помогите,пожалуйста,решить на С++ hmik Программирование и базы данных 2 30-10-2011 11:04
C/C++ - ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ НА С++ delfi Программирование и базы данных 1 12-05-2011 20:19
Разное - помогите решить задачи на QBasic rockman90 Программирование и базы данных 1 28-12-2007 18:34
Помогите научится писать программы на C++Builder 6.0 maksimka ford Программирование и базы данных 10 25-11-2003 19:43




 
Переход