Forum Webscript.Ru
Общие => Веб-технологии => Тема начата: Masta A от 26 Июля 2001, 12:43:37
-
Ктонить скажет есть ли какойто эмулятор юниха под мастдай?
Те.е чтобы команды юниха работали под мастдаем.А то как то линух ставить не то что не охота а не зачем .Машина к нету раз в полгода подключается да и сетки нет.А выучит команды и вообще систему охота ой как!
-
DamonLSD (06-04-2001 10:08):
Привет, All
У меня вопрос следующего плана.
Имеется файл, в этом файле есть строки следующего формата: 20:51:12 (это время). В файле также может встретиться символ ":" (двоеточие).
Вопрос: каким образом можно удалить ВСЮ строку, которая содержит символ ":", не затронув при этом двоеточия в тексте времени? Т.е. если встретился символ ":" и он не соответствует формату \\d\\d:\\d\\d:\\d\\d то строку нужно удалить.
Спасибо.
А в чем проблема? Читаешь построчно файл: сравниваешь его с твоей маской. Если подходит, то оставляешь строку.
PS Символ, соответствующий формату? Круто...
PPS Хранил бы время одним числом.
-
Ха, приколисты, "символ не соответствующий формату" ;)
Тебе дело говорят, хранил бы числом и проблем не было
-
yarik (07-04-2001 05:39):
Ха, приколисты, "символ не соответствующий формату" ;)
Тебе дело говорят, хранил бы числом и проблем не было
Не дело - потому что потребуется удалить строки, в которых встречается число, и задача сведется к предыдущей.:))
if ($str =~ m/^\\d\\d:\\d\\d:\\d\\d.*:/ )
{
#удалить
}
-
Chs (07-04-2001 09:09):
yarik (07-04-2001 05:39):
Ха, приколисты, "символ не соответствующий формату" ;)
Тебе дело говорят, хранил бы числом и проблем не было
Не дело - потому что потребуется удалить строки, в которых встречается число, и задача сведется к предыдущей.:))
Автору надо было удалить строки с \':\', коих в числах пока не встречается :-)
2Автор: мог бы и написать - зачем это надо - может, может и решение красивее будет.
-
yarik (07-04-2001 05:39):
2Автор: мог бы и написать - зачем это надо - может, может и решение красивее будет.
Ну елки-палки, ну что вы ВСЕ сразу набросились :(
Попробую все объяснить. Файл состоит из строк вот такого формата:
Исходящ 7CF 22999 79387 00:22:50 - 00:22:56
Исходящ 7CF 22999 77246 00:23:32 - 00:23:32
Исходящ 6C2 22730 84213752350 00:23:40 - 00:23:50
Исходящ 7CF 22999 77239 00:23:52 - 00:23:52
но встречаются и строки "паразиты" :) которые содержат это самое двоеточие, например:
Внутрен 024 22131 9:204454 15:29:24 - 15:29:58
ДВО 222 21546 :5 02:25:24 - 02:25:24
ВОТ ЭТИ СТРОКИ "паразиты" И НУЖНО УДАЛИТЬ!
Кто еще, что подскажет?
Большое лам-Спасибо.
-
$file = \'что-то где-то\';
open (FILE, "+<$file");
while (){
@blank = split /-/, $_;
push @normal_strings, $_ if (!($blank[0] =~ /:/));
}
seek(FILE, 0,0);
truncate FILE, 0;
print FILE @normal_strings;
-
Light Elf (07-04-2001 22:37):
$file = \'что-то где-то\';
open (FILE, "+<$file");
while (){
@blank = split /-/, $_;
push @normal_strings, $_ if (!($blank[0] =~ /:/));
}
seek(FILE, 0,0);
truncate FILE, 0;
print FILE @normal_strings;
Не круто, учитывая каких размеров бывают логи...
PS Что-то файлы закрывать забываешь...
PPS Что-то readme.txt глючит....
-
можно связать текстовый файл с массивом с помощью tie. Тогда память не будет загружаться.
-
DamonLSD (07-04-2001 13:44):
но встречаются и строки "паразиты" :) которые содержат это самое двоеточие, например:
Внутрен 024 22131 9:204454 15:29:24 - 15:29:58
ДВО 222 21546 :5 02:25:24 - 02:25:24
ВОТ ЭТИ СТРОКИ "паразиты" И НУЖНО УДАЛИТЬ!
Кто еще, что подскажет?
А откуда эти "строки-паразиты" берутся-то? Не легче ли с ними бороться до их попадания в файл?
-
Light Elf (11-04-2001 20:24):
можно связать текстовый файл с массивом с помощью tie. Тогда память не будет загружаться.
tie() массивов не поддерживает многие, специфичные для массивов функции (ну, unshift(), например)
-
Задача: обработать текстовый файл не загружая память и удалить из файла стрики неверного формата. Функция tie с этим справится.
-
Light Elf (12-04-2001 20:58):
Задача: обработать текстовый файл не загружая память и удалить из файла стрики неверного формата. Функция tie с этим справится.
Замучаешся ты это через tie() делать. Не говоря уже о быстродействии.
-
Light Elf (12-04-2001 20:58):
Задача: обработать текстовый файл не загружая память и удалить из файла стрики неверного формата. Функция tie с этим справится.
Light Elf, а можно чуточку подробнее об этом?
Буду очень признателен.
-
use DB_File;
$dbobj = tie(@lines, "DB_File", $file, O_RDWR|O_CREATE, 0666, $DB_RECNO);
$lines[0] = \'one\';
$lines[1] = \'two\';
#добавление новой записи:
$i = 1; #номер, после которой вставить.
$dbobj->put($i, \'New One\', R_IBEFORE);
# R_IBEFORE or R_IAFTER.
#удаление записи:
$bdobj->del($Nomer);
undef $dbobj;
untie @lines;
#########################
-
CJ - может что лучше предложешь?
критиковать каждый может, тут много ума не надо.
-
для cj:
$dbobj->unshift(@mass);
# прекрасно работает.
-
Это уже не обсуждение tie(), а обсуждение DB_File (про которую не было сказано ни слова). Учитывая твои распальцовки, ты наверняка копался в сырках Berkeley. И наверняка сам понимаешь, какие последствия несут в себе полная перезапись содержимого файла (про лочку которого у тебя нет и упоминания). Про unshift имелось ввиду, что надо самому выполнять их, и то не на всех версиях Перл\'а.
-
cj, возможно, предложенный мною вариант не самый лучший. Готов это признать. Но я прошу:
! Предожи лучше.
Я всегда с радостью готов учиться, и признать свою неправоту для меня не проблема. Истина дороже.
Спасибо.
-
cj, а может и правда, что-нибудь конкретное предложишь, а то ведь так ничего и не получается.
Спасибо.
-
DamonLSD (17-04-2001 08:11):
cj, а может и правда, что-нибудь конкретное предложишь, а то ведь так ничего и не получается.
Спасибо.
По-моему, тривиальная задача, а раздули, как будто CIS обсуждаем:
require Symbol;
my $log = "access_log";
my $temp = "access_log_tmp";
my $TH = Symbol::gensym();
my $LH = Symbol::gensym();
unless(open($LH, "+>>$log"))
{
die();
}
flock($LH, 2);
seek($LH, 0, 0);
unless(open($TH, "+>>$temp"))
{
}
trucate($TH, 0);
foreach my $line (<$FH>)
{
#
# Тут проверить строку на вшивость в соответствии с требованиями
#
print($TH $line);
}
seek($TH, 0, 0);
truncate($LH, 0);
foreach my $line (<$TH>)
{
print($LH, $line);
}
close($LH);
close($TH);
unlink($temp);
Проверки на ошибки расставить по вкусу. Про отсутствие "фишки" с переименованием файла об\'яснять не буду. Запускать очень часто все-равно не советую.
-
Поставь линух второй осью и запускай когда надо.
ИМХО, Мэндрейк лучше всего.:)
-
Если будешь работать с эмулятором чего-нибудь, то сам станешь только эмулятором специалиста в этой области. Если "охота ой как", то ставь!
-
тут на форуме ктото помоему упоминал про буржуйский халявный хостинг, который дает шелл
-
фри шеллл - это http://hobbiton.org или http://ya.ru/yandsearch?text=free+shell&rpt=rad :)
-
Все равно, лучше помойку на i486 собрать. Сильная экономия на оплате dualup;)
-
http://www.freebelt.com/freeshells.html
-
Ну, право слово, какая разница если юзеру надо поюзать Shell :D
-
Чей-то http://hobbiton.org/ не грузится.
Лучше сделать как у меня: найти на помойке i486 и поставить FreeBSD. Все работает Ок :D
-
Чей-то http://hobbiton.org/ не грузится.
Лучше сделать как у меня: найти на помойке i486 и поставить FreeBSD. Все работает Ок :D
RedHat форэва!:D
-
Vsio oceni prosto
Beriosh telneat( na filesearch.ru ili telneat.lipetsk.ru) i vot tebe emuleator.
Oceni udobnii(daje tsvenoi \'mc\' tam). Ia licino polizuiusi.
-
Все равно, полноценно работающая помойка (i386 or i486) лучше. Другое дело, что найти такой комп - проблема. Все давно уже выкинули :D