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

Показать сообщение отдельно

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


Сообщения: 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