Logwatch 的多行正则表达式 ignore.conf

multi-line regex for Logwatch ignore.conf

我在 运行 有防火墙的机器上使用 Logwatch。每天我都会收到一封包含以下条目的电子邮件:

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

在文件中,匹配的 "From" 行被删除,但所有其他行保留。我的问题是,我能否构建一个不仅匹配 "From" 行,而且匹配它后面的所有行,直到出现以“^ From”开头的下一行的单个正则表达式?我知道你可以用 sed 做到这一点,但我不确定是否可以只用 ignore.conf 中的正则表达式。预先感谢所有回复的人。

如果点还捕获换行符,则此正则表达式模式应该足够了:

From\s+123\.123\.123\.10.+(?=\s+From)