Модераторы: korob2001, JackYF, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите новичку, разбор скрипта, ч2 
:(
    Опции темы
7183847
Дата 17.8.2019, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 7.8.2019

Репутация: нет
Всего: нет



Добрый день

Помогите разобрать однострочную программу на perl 

Первая часть понятна (если выражение совпадает, то все переводы строки заменям на <line>, а вот дальше не понятно.

Помогите пожалуйста.

Код

perl -n-e 'if (/^\d\d:\d\d/./d+/) ($event =s/\n/<line>/g; print $event."\n"; $event ="";) $event .= $_; END{print $event."\n":}'

PM MAIL   Вверх
arto
Дата 19.8.2019, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1481
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



проверьте, какой оператов стоит у вас между регекспами -- .. (dot-dot) или ... (dot-dot-dot).
от этого зависит ответ.
ну и пример входных данных был бы полезен.
PM MAIL ICQ   Вверх
7183847
Дата 20.8.2019, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 7.8.2019

Репутация: нет
Всего: нет



Цитата(arto @ 19.8.2019,  07:00)
проверьте, какой оператов стоит у вас между регекспами -- .. (dot-dot) или ... (dot-dot-dot).
от этого зависит ответ.
ну и пример входных данных был бы полезен.

Добрый день

Да, опечатался, правильно так:

Код

perl -n-e 'if (/^\d\d:\d\d/.\d+/) ($event =s/.\n/<line>/g; print $event."\n"; $event ="";) $event .= $_; END{print $event."\n":}'


Пример входных данных:

Код

25:25.282004-0,EXCP,0,process=ragent,Exception=81029657-3fe6-4cd6-80c0-36de78fe6657,Descr='src\ServerAgentImpl.cpp(697):
81029657-3fe6-4cd6-80c0-36de78fe6657: server_addr=W81-TEST descr=11001(0x00002AF9): Этот хост неизвестен. line=1102 file=src\DataExchangeCommon.cpp'
25:35.876000-0,EXCP,1,process=ragent,ClientID=0,Exception=NetDataExchangeException,Descr='server_addr=W81-TEST descr=11001(0x00002AF9): Этот хост неизвестен. line=1102 file=src\DataExchangeCommon.cpp'

PM MAIL   Вверх
arto
Дата 20.8.2019, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1481
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



всё равно неверныое регулярное выражение, скорее всего оно должно выглядеть так: /^\d\d:\d\d\.\d+/
в таком случае однострочник сначала печатает все строки, начинающиеся с этого регулярного выражения, а затем все остальные строки
можно упростить:
Код

perl -lne 'if (/^\d\d:\d\d\.\d+/) { print; next } push @a, $_; END { $, = "\n"; print @a }'


Это сообщение отредактировал(а) arto - 20.8.2019, 08:43
PM MAIL ICQ   Вверх
Google
  Дата 16.9.2019, 03:22 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0956 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.