Я использую Logwatch на машине с брандмауэром. Каждый день я получаю по электронной почте полного записей, как следующее:многострочное регулярное выражение для Logwatch ignore.conf
From 123.123.123.10 - 28087 packets
To 123.123.123.1 - 2 packets
Service: http (tcp/80) (Firewall Allow) - 2 packets
To 123.123.123.2 - 1 packet
Service: http (tcp/80) (Firewall Allow) - 1 packet
To 123.123.123.3 - 7 packets
Service: https (tcp/443) (Firewall Allow) - 7 packets
From 123.123.123.11 - 28087 packets
To 123.123.123.1 - 2 packets
Service: http (tcp/80) (Firewall Allow) - 2 packets
To 123.123.123.2 - 1 packet
Service: http (tcp/80) (Firewall Allow) - 1 packet
To 123.123.123.3 - 7 packets
Service: https (tcp/443) (Firewall Allow) - 7 packets
Я хотел бы поставить запись в моем файле ignore.conf, которая пропускает всю информацию для конкретной системы или подсети. Поскольку записи ignore.conf просто Perl-стиль регулярных выражений, если я ставлю
^ From 123\.123\.123\.10
в файле, согласующий «От» линии удаляется, а все остальные строки остаются. Мой вопрос: могу ли я создать одно регулярное выражение, которое будет соответствовать не только строке «От», но и все последующие строки, до тех пор, пока не произойдет следующая строка, начинающаяся с «^ От»? Я знаю, что вы можете сделать это с помощью sed, но я не уверен, что это возможно только с регулярным выражением в ignore.conf. Спасибо заранее всем, кто отвечает.
В Perl-стиль регулярных выражений, точка соответствует всем, кроме символа новой строки. – Leslie
См. Http://docstore.mik.ua/orelly/perl/cookbook/ch06_07.htm, в нем говорится: «/ s позволяет. Match newline (обычно это не так)». См. Https://regex101.com/r/qY4yB1/1, режим PCRE (совместимые с Perl регулярные выражения) работает со входом. –
Я стою исправлено; моя книга «Программирование Perl», очевидно, устарела. Тем не менее, через несколько дней с вашим предложенным регулярным выражением в файле ignore.conf, я все еще вижу строки, которые должны были быть удалены. если вы прощаете недоверчивость, возможно, журнал не интерпретирует регулярное выражение для текущего стандарта? Можно ли написать регулярное выражение, которое не предполагает, что точка захватывает новые символы строки, поэтому это можно было протестировать? Еще раз спасибо за вашу помощь. – Leslie