Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Помогите новичку, разбор скрипта, ч2


Автор: 7183847 17.8.2019, 11:24
Добрый день

Помогите разобрать однострочную программу на 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":}'

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

Автор: 7183847 20.8.2019, 07:39
Цитата(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'

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

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

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