Forum Webscript.Ru

Общие => Веб-технологии => Тема начата: Masta A от 26 Июля 2001, 12:43:37

Название: Насчет эмулятора юниха!!!
Отправлено: Masta A от 26 Июля 2001, 12:43:37
Ктонить скажет есть ли какойто эмулятор юниха под мастдай?
Те.е чтобы команды юниха работали под мастдаем.А то как то линух ставить не то что не охота а не зачем .Машина к нету раз в полгода подключается да и сетки нет.А выучит команды и вообще систему охота ой как!
Название: Насчет эмулятора юниха!!!
Отправлено: cj от 06 Апреля 2001, 11:13:24
Цитировать
DamonLSD (06-04-2001 10:08):
Привет, All
У меня вопрос следующего плана.
Имеется файл, в этом файле есть строки следующего формата: 20:51:12 (это время). В файле также может встретиться символ ":" (двоеточие).
Вопрос: каким образом можно удалить ВСЮ строку, которая содержит символ ":", не затронув при этом двоеточия в тексте времени? Т.е. если встретился символ ":" и он не соответствует формату \\d\\d:\\d\\d:\\d\\d то строку нужно удалить.

Спасибо.

А в чем проблема? Читаешь построчно файл: сравниваешь его с твоей маской. Если подходит, то оставляешь строку.

PS Символ, соответствующий формату? Круто...
PPS Хранил бы время одним числом.
Название: Насчет эмулятора юниха!!!
Отправлено: yarik от 07 Апреля 2001, 05:39:46
Ха, приколисты, "символ не соответствующий формату" ;)
Тебе дело говорят, хранил бы числом и проблем не было
Название: Насчет эмулятора юниха!!!
Отправлено: Chs от 07 Апреля 2001, 09:07:00
Цитировать
yarik (07-04-2001 05:39):
Ха, приколисты, "символ не соответствующий формату" ;)
Тебе дело говорят, хранил бы числом и проблем не было
Не дело - потому что потребуется удалить строки, в которых встречается число, и задача сведется к предыдущей.:))

if ($str =~ m/^\\d\\d:\\d\\d:\\d\\d.*:/ )
{
#удалить
}
Название: Насчет эмулятора юниха!!!
Отправлено: cj от 07 Апреля 2001, 09:35:16
Цитировать
Chs (07-04-2001 09:09):
Цитировать
yarik (07-04-2001 05:39):
Ха, приколисты, "символ не соответствующий формату" ;)
Тебе дело говорят, хранил бы числом и проблем не было
Не дело - потому что потребуется удалить строки, в которых встречается число, и задача сведется к предыдущей.:))

Автору надо было удалить строки с \':\', коих в числах пока не встречается :-)

2Автор: мог бы и написать - зачем это надо - может, может и решение красивее будет.
Название: Насчет эмулятора юниха!!!
Отправлено: DamonLSD от 07 Апреля 2001, 13:44:14
Цитировать
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

ВОТ ЭТИ СТРОКИ "паразиты" И НУЖНО УДАЛИТЬ!
Кто еще, что подскажет?

Большое лам-Спасибо.
Название: Насчет эмулятора юниха!!!
Отправлено: Light Elf от 07 Апреля 2001, 22:37:48
$file = \'что-то где-то\';
open (FILE, "+<$file");
while (){
    @blank = split /-/, $_;
    push @normal_strings, $_ if (!($blank[0] =~ /:/));
}
seek(FILE, 0,0);
truncate FILE, 0;
print FILE @normal_strings;
Название: Насчет эмулятора юниха!!!
Отправлено: cj от 08 Апреля 2001, 15:28:28
Цитировать
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 глючит....
Название: Насчет эмулятора юниха!!!
Отправлено: Light Elf от 11 Апреля 2001, 20:24:34
можно связать текстовый файл с массивом с помощью tie. Тогда память не будет загружаться.
Название: Насчет эмулятора юниха!!!
Отправлено: lodevar от 12 Апреля 2001, 09:05:32
Цитировать
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
ВОТ ЭТИ СТРОКИ "паразиты" И НУЖНО УДАЛИТЬ!
Кто еще, что подскажет?

А откуда эти "строки-паразиты" берутся-то? Не легче ли с ними бороться до их попадания в файл?
Название: Насчет эмулятора юниха!!!
Отправлено: cj от 12 Апреля 2001, 16:36:58
Цитировать
Light Elf (11-04-2001 20:24):
можно связать текстовый файл с массивом с помощью tie. Тогда память не будет загружаться.

tie() массивов не поддерживает многие, специфичные для массивов функции (ну, unshift(), например)
Название: Насчет эмулятора юниха!!!
Отправлено: Light Elf от 12 Апреля 2001, 20:58:54
Задача: обработать текстовый файл не загружая память и удалить из файла стрики неверного формата. Функция tie с этим справится.
Название: Насчет эмулятора юниха!!!
Отправлено: cj от 13 Апреля 2001, 08:15:30
Цитировать
Light Elf (12-04-2001 20:58):
Задача: обработать текстовый файл не загружая память и удалить из файла стрики неверного формата. Функция tie с этим справится.

Замучаешся ты это через tie() делать. Не говоря уже о быстродействии.
Название: Насчет эмулятора юниха!!!
Отправлено: DamonLSD от 13 Апреля 2001, 08:21:37
Цитировать
Light Elf (12-04-2001 20:58):
Задача: обработать текстовый файл не загружая память и удалить из файла стрики неверного формата. Функция tie с этим справится.

Light Elf, а можно чуточку подробнее об этом?
Буду очень признателен.
Название: Насчет эмулятора юниха!!!
Отправлено: Light Elf от 14 Апреля 2001, 19:40:23
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;
#########################
Название: Насчет эмулятора юниха!!!
Отправлено: Light Elf от 14 Апреля 2001, 19:42:46
CJ - может что лучше предложешь?
критиковать каждый может, тут много ума не надо.
Название: Насчет эмулятора юниха!!!
Отправлено: Light Elf от 15 Апреля 2001, 09:50:54
для cj:
   $dbobj->unshift(@mass);
   # прекрасно работает.
Название: Насчет эмулятора юниха!!!
Отправлено: cj от 16 Апреля 2001, 06:59:40
Это уже не обсуждение tie(), а обсуждение DB_File (про которую не было сказано ни слова). Учитывая твои распальцовки, ты наверняка копался в сырках Berkeley. И наверняка сам понимаешь, какие последствия несут в себе полная перезапись содержимого файла (про лочку которого у тебя нет и упоминания). Про unshift имелось ввиду, что надо самому выполнять их, и то не на всех версиях Перл\'а.
Название: Насчет эмулятора юниха!!!
Отправлено: Light Elf от 16 Апреля 2001, 20:42:08
cj, возможно, предложенный мною вариант не самый лучший. Готов это признать. Но я прошу:
        ! Предожи лучше.

Я всегда с радостью готов учиться, и признать свою неправоту для меня не проблема. Истина дороже.
Спасибо.
Название: Насчет эмулятора юниха!!!
Отправлено: DamonLSD от 17 Апреля 2001, 08:11:40
cj, а может и правда, что-нибудь конкретное предложишь, а то ведь так ничего и не получается.

Спасибо.
Название: Насчет эмулятора юниха!!!
Отправлено: cj от 17 Апреля 2001, 09:00:19
Цитировать
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);

Проверки на ошибки расставить по вкусу. Про отсутствие "фишки" с переименованием файла об\'яснять не буду. Запускать очень часто все-равно не советую.
Название: Насчет эмулятора юниха!!!
Отправлено: Gray от 11 Августа 2001, 13:45:12
Поставь линух второй осью и запускай когда надо.
ИМХО, Мэндрейк лучше всего.:)
Название: Насчет эмулятора юниха!!!
Отправлено: lodevar от 26 Июля 2001, 13:12:41
Если будешь работать с эмулятором чего-нибудь, то сам станешь только эмулятором специалиста в этой области. Если "охота ой как", то ставь!
Название: Насчет эмулятора юниха!!!
Отправлено: AliMamed от 26 Июля 2001, 15:56:00
тут на форуме ктото помоему упоминал про буржуйский халявный хостинг, который дает шелл
Название: Насчет эмулятора юниха!!!
Отправлено: !ataMAN! от 31 Июля 2001, 14:09:12
фри шеллл - это http://hobbiton.org или http://ya.ru/yandsearch?text=free+shell&rpt=rad :)
Название: Насчет эмулятора юниха!!!
Отправлено: Realtor from Moscow от 08 Августа 2001, 01:22:25
Все равно, лучше помойку на i486 собрать. Сильная экономия на оплате dualup;)
Название: Насчет эмулятора юниха!!!
Отправлено: !ataMAN! от 06 Августа 2001, 23:59:08
 http://www.freebelt.com/freeshells.html
Название: Насчет эмулятора юниха!!!
Отправлено: Realtor from Moscow от 05 Августа 2001, 04:16:48
Ну, право слово, какая разница если юзеру надо поюзать Shell :D
Название: Насчет эмулятора юниха!!!
Отправлено: Realtor from Moscow от 05 Августа 2001, 04:05:28
Чей-то http://hobbiton.org/ не грузится.
Лучше сделать как у меня: найти на помойке i486 и поставить FreeBSD. Все работает Ок :D
Название: Насчет эмулятора юниха!!!
Отправлено: AliMamed от 05 Августа 2001, 04:11:32
Цитировать
Чей-то http://hobbiton.org/ не грузится.
Лучше сделать как у меня: найти на помойке i486 и поставить FreeBSD. Все работает Ок :D


RedHat форэва!:D
Название: Насчет эмулятора юниха!!!
Отправлено: nick от 16 Августа 2001, 20:12:58
 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.
 
Название: Насчет эмулятора юниха!!!
Отправлено: Realtor from Moscow от 17 Августа 2001, 01:47:46
Все равно, полноценно работающая помойка (i386 or i486) лучше. Другое дело, что найти такой комп - проблема. Все давно уже выкинули :D