|
| Дата |
|
USD/RUB | 89.7026 | BTC/USD | 67796.7496 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
30.09.2010, 13:27
|
Start Post: Почистить кеи
|
spomoni.com
Регистрация: 06.04.2008
Сообщений: 18,523
Бабло: $2077705
|
Кто поможет.
Есть файл с кеями, встречаются в нем кеи вида:
231 buy viagra usa 6754
45 buy viagra cheap usa 32
11 buy valium cheap 352
и т.п., то есть где перед кеем идут цифры и после кея цифры.
Вот надо бы все это говно поудалять, то есть вот такие вот кеи с цифрами до кея и после. Кто скриптик подскажет?
|
|
|
30.09.2010, 23:39
|
#22
|
Senior Member
Регистрация: 28.05.2009
Сообщений: 1,321
Бабло: $164090
|
Я понимаю, у вас там своя религия, а регеспы решают, определенно. Просто закинь и сравни.
|
|
|
01.10.2010, 03:55
|
#23
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
Цитата:
Сообщение от 1een
Просто закинь 100-метровый файл в grep и в textpipe - почуствуешь разницу
|
виндовый самопис не может быть быстрее линуксовой системной утилиты! которая вынашивалась и допиливалась годами, или даже десятилетиями, причем grep - одна из самых популярных системных команд на никс серверах.
100 метров? давай может пару гигабайт? 2 гига у меня анализировалось около 3 минут, причем файл с результатом получился тоже под 2Г, правда сравнить с виндой не могу.
Единственное, в чем может быть мой просчет - это регексп, возможно он требует оптимизации.
|
|
|
01.10.2010, 04:57
|
#24
|
Senior Member
Регистрация: 11.02.2010
Сообщений: 928
Бабло: $176835
|
Осталось линух поставить
|
|
|
01.10.2010, 12:31
|
#25
|
spomoni.com
Регистрация: 06.04.2008
Сообщений: 18,523
Бабло: $2077705
ТС -->
|
ТС
Цитата:
Сообщение от RedHead
PHP код:
<?php
$fin = file ("keys.txt");
$fout = fopen ("result.txt","w");
foreach ($fin as $key){
$first_space = strpos($key," ");
$last_space = strrpos($key," ");
$final = substr($key,$first_space+1,$last_space-$first_space-1);
fputs ($fout,$final."\r\n");
}
fclose ($fout);
?>
накалякал на коленке, вроде так.
|
Да, но немного не то.
Работает как надо, если в файле все кеи вида
345 buy xanax 5657
Но у меня там есть такие и нормальные, без цифр. У нормальных естественно скрипт вырезает первое и последнее слово. Нужно что б он чисто цифры отбирал, если они есть в начале и в конце кея.
|
|
|
01.10.2010, 13:50
|
#26
|
Силденафил
Регистрация: 17.05.2009
Сообщений: 546
Бабло: $11198228
|
PHP код:
<?php $in = file("./in.txt"); $out_ = "./out.txt";
for ($i=0; $i<count($in); $i++){ preg_match("![0-9]{1,}(.*?)[0-9]{1,}!", $in[$i], $m); if($m[1]==false){ $out[] = trim($in[$i]); } } $file_out=fopen($out_,"w"); fwrite($file_out,implode("\r\n",$out)); fclose($file_out); ?>
Этот вариант убирает сами кеи вместе с номерами
PHP код:
<?php $in = file("./in.txt"); $out_ = "./out.txt";
for ($i=0; $i<count($in); $i++){ preg_match("![0-9]{1,}(.*?)[0-9]{1,}!", $in[$i], $m); if($m[1]==false){ $out[] = trim($in[$i]); } else { $out[] = trim($m[1]); } } $file_out=fopen($out_,"w"); fwrite($file_out,implode("\r\n",$out)); fclose($file_out); ?>
Этот вариант убирает номера вокруг кея, но сам кей остаётся.
Сколько эта хуйня будет работать на большом файле можно только гадать))
Последний раз редактировалось izlade; 01.10.2010 в 14:00.
|
|
|
01.10.2010, 14:17
|
#27
|
Senior Member
Регистрация: 15.11.2008
Сообщений: 13,239
Бабло: $247847011
|
Цитата:
Сколько эта хуйня будет работать на большом файле можно только гадать))
|
вообще жесткач, это все в оперативку будет лезть, и в своп
просто читать построчно файл и нормально будет
|
|
|
01.10.2010, 14:36
|
#28
|
Senior Member
Регистрация: 26.08.2008
Адрес: UA
Сообщений: 2,941
Бабло: $402835
|
PHP код:
<?php $fin = file ("keys.txt"); $fout = fopen ("result.txt","w"); foreach ($fin as $key){ $exp_key = explode (" ",trim($key)); if ( ((int)reset($exp_key) OR reset($exp_key)=="0") AND ((int)end($exp_key) OR end($exp_key) =="0") ){ array_shift($exp_key); array_pop($exp_key); } $result = implode (" ",$exp_key); fputs ($fout,$result."\r\n"); } fclose ($fout); ?>
без регулярок ибо не силен
ну и пришлось дописывать костыли, оказывается что функция (int)$a будет возвращать ноль когда $a строка и когда $a равно цифре ноль. получается строку 0 buy viagra 0 можно провтыкать. туповато как то. .
Последний раз редактировалось RedHead; 01.10.2010 в 14:42.
|
|
|
01.10.2010, 14:38
|
#29
|
Senior Member
Регистрация: 15.11.2008
Сообщений: 13,239
Бабло: $247847011
|
чтение и запись построчно сделайте, блеять!
|
|
|
01.10.2010, 14:42
|
#30
|
Силденафил
Регистрация: 17.05.2009
Сообщений: 546
Бабло: $11198228
|
Нунах, так же работает, если файл до метра то всё нормально должно быть1
|
|
|
01.10.2010, 14:49
|
#31
|
Senior Member
Регистрация: 15.11.2008
Сообщений: 13,239
Бабло: $247847011
|
да, я что-то перепутал, думал файл на 2 гига там)
|
|
|
|