Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > Подчистить файл от мусорной последовательности


Автор: pay 16.3.2006, 00:47
помогите, плз.
Есть файл в который кидается нечто (Выводы telnet сессии с Cisco).
Для сессии использую модуль Net::Telnet::Cisco. Так вот, в выводе сессии в конце каждого telnet'овского окна (через определнное количество символов в файле) присутствует последовательность символов вида " --More-- ....... ...... "
Как увеличить это окно с помощью средств Net::Telnet::Cisco я не понял (похоже, что таких средств просто нет. Если я ошибаюсь, ткните носом, плз.).
Как вариант остаётся подчистить файл.
Подскажите, плз как закодить это. Запутался...

Автор: korob2001 16.3.2006, 07:07
Приведи часть записи из файла и укажи, от чего именно нужно очистить файл?

Автор: pay 16.3.2006, 10:45
Цитата(korob2001 @ 16.3.2006, 07:07)
Приведи часть записи из файла и укажи, от чего именно нужно очистить файл?

Например такой отрывок из генерируемого файла:

O 172.19.254.1/32 [110/3] via 172.20.1.2, 1w0d, FastEthernet0/0.510
O 172.19.253.1/32 [110/3] via 172.20.1.2, 1w0d, FastEthernet0/0.510
O IA 172.19.3.0/24 [110/3] via 172.20.1.2, 1w0d, FastEthernet0/0.510
O IA 172.19.2.0/24 [110/3] via 172.20.1.2, 1w0d, FastEthernet0/0.510
--More--  O IA 172.19.1.0/24 [110/3] via 172.20.1.2, 1w0d, FastEthernet0/0.510
172.18.0.0/17 is subnetted, 1 subnets
O 172.18.0.0 [110/2] via 172.20.1.2, 1w0d, FastEthernet0/0.510
172.21.0.0/24 is subnetted, 1 subnets


Здесь встречается такая последовательность:
--More--  
Таких последовательностей в большом файле довольно много. От неё и надо избавиться...

Автор: korob2001 16.3.2006, 11:17
Сохрани под любым именем этот код и укажи в переменной $file путь к файлу, обязательно сделай резервную копию, перед запуском и запусти этот код на выполнение.
Код

#!/usr/bin/perl -w
use strict;

my $file = "bin.txt";

open(R, "< $file") or die "Can't open file '$file': $!\n";
open(W, "> $file.temp") or die "Can't open file '$file.temp': $!\n";

while (<R>) {
        chomp;
        s/--More[\W]+//gi;
        print W $_, "\n";
}

close(W) or die "Can't close file '$file.temp': $!\n";
close(R) or die "Can't close file '$file': $!\n";

unlink($file) or warn "Can't remove file '$file': $!\n";
rename("$file.temp", $file) or warn "Can't rename file '$file.temp' to '$file': $!\n";

Автор: pay 16.3.2006, 14:34
Спасибо большое!
Отлично работает

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)