У меня есть файл журнала, содержащий вывод нескольких команд, запущенных на каждом сервере. Формат подобенPerl - чтение файла вывода команд по строке
APRHY01> lt all
131119-15:41:39 10.105.219.68 10.0b stopfile=/tmp/27599
Checking MOM version...RNC_NODE_MODEL_M_1_200
Parsing MOM (cached): /home/ekisjay/moshell//jarxml/RNC_NODE_MODEL_M_1_200.xml.cache.gz Done.
.............
.
.
.
APRHY01> alt
131119-15:41:55 10.105.219.68 10.0b RNC_NODE_MODEL_M_1_200 stopfile=/tmp/27599
Connecting to 10.105.219.68:56834 (CorbaSecurity=OFF, corba_class=2, java=1.6.0_26, jacoms=R73D19, jacorb=R73D01)
Starting to retrieve active alarms
Nr of active alarms are: 3
APRHY01> strt
131119-15:41:58 10.105.219.68 10.0b RNC_NODE_MODEL_M_1_200 stopfile=/tmp/27599
Following 326 sites are up:
---------------------------------------------------------------------------------------------------------------------
MOD IUBLINK CELLNAMES CFRPHEM1 CFRPHEM2 CFRPHEM3 CFRPHEM4 CFRPHEM5 CFRPHEM6 ICDS TN ATMPORTS
---------------------------------------------------------------------------------------------------------------------
21 Iub_00023 UHYD494-X 111111 1 1 I
21 Iub_00032 UHY4100-X 111111 1 1 I
затем на следующий сервер или узел это повторяется ...
APRHY02> lt all
131119-15:44:51 10.105.219.4 10.0b stopfile=/tmp/2874
Checking MOM version...RNC_NODE_MODEL_M_1_200
Parsing MOM (cached): /home/ekisjay/moshell//jarxml/RNC_NODE_MODEL_M_1_200.xml.cache.gz Done.
Using paramfile /home/ekisjay/moshell//commonjars/pm/PARAM_RNC_M_1_50.txt
Parsing
file /home/ekisjay/moshell//commonjars/pm/PARAM_RNC_M_1_50.txt ...
Я должен взять несколько строк (в соответствии с Условия работы, которые, как утверждается в требовании) между каждая команда для каждого узла. Я написал программу perl при прочтении строки за строкой и остановился в каждой строке, соответствующей команде /[A-Z][A-Z][A-Z][A-Z][A-Z][0-9][0-9]\>
, а затем извлекал необходимые строки между и до следующей командной строки и записывал их в другой файл. В цикле моя программа фактически пропускает одну команду между ними и идет для следующей команды (1-й, 3-й, 5-й тип ...). Может кто-нибудь мне помочь?
код: мой $ srcFile = «new.log» мой $ DestFile = «deviations.log «my grabbed = {}; my $ line =" "; open (my $ src," $ srcFile ") или умереть" Не удалось открыть файл журнала $ srcFile: $! "; открыть (мой $ dest,"> > $ destFile ") или die" Не удалось открыть файл назначения $ destFile: $!", тогда как ($ line = <$src>) { if ($ line = ~/[AZ] [AZ] [AZ] [AZ] [AZ] [0-9] [0-9] \> /) {push grabbed , «Отклонения вывода команды: $ line \ n»; while ($ line = <$src>) {if ($ line! ~/[AZ] [AZ] [AZ] [AZ] [AZ] [0-9 ] [0-9] \> /) {push grabbed, $ line;} else {last;}}}} print $ dest "\ ngrabbed"; закрыть $ dest; закрыть $ src; –
В моем коде заменить grabbed by @grabbed –
_Пожалуйста, подумайте о добавлении кода в исходный вопрос, в интересах кого-либо, кто читает, кто пытается ответить. И скопируйте и вставьте именно код, с которым у вас возникли проблемы, чтобы убедиться, что проблема не (например, 'grabbed' для' $ grabbed') –