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

时间:2015-02-24 22:01:54

标签: regex perl logfile

我在运行防火墙的计算机上使用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" line,但是跟随它的所有行,直到下一行以" ^ From"发生?我知道你可以用sed做到这一点,但我不确定在ignore.conf中只有一个正则表达式是否可行。提前感谢所有回复的人。

1 个答案:

答案 0 :(得分:0)

如果dot也捕获换行符,那么这个正则表达式就足够了:

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