added pattern match
authorHeiko Schlittermann <hs@schlittermann.de>
Wed, 02 Dec 2009 07:47:31 +0100
changeset 1 63072e0d02a6
parent 0 fc91e5013dbb
child 2 5758f12ce2d7
added pattern match
.perltidyrc
postgrep
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.perltidyrc	Wed Dec 02 07:47:31 2009 +0100
@@ -0,0 +1,2 @@
+--paren-tightness=2
+--square-bracket-tightness=2
--- a/postgrep	Wed Dec 02 07:37:59 2009 +0100
+++ b/postgrep	Wed Dec 02 07:47:31 2009 +0100
@@ -5,20 +5,27 @@
 use Memoize;
 use Smart::Comments;
 
+die "Usage: $0 pattern [file]…\n" if !@ARGV;
+
+my $pattern = shift;
+
 my %msglog;
 my %removed;
 
 memoize("str2time");
 
 while (<>) {
-    chomp;
 
-    /^(?<date>.{15})
-    \s(?<host>\S+)
-    \s(?<service>\S+):
-    \s(?<pfid>[[:xdigit:]]+):
-    \s(?<rest>.*)
-    /x	or next;
+    if (!/^(?<date>.{15})
+	\s(?<host>\S+)
+	\s(?<service>\S+):
+	\s(?<pfid>[[:xdigit:]]+):
+	\s(?<rest>.*)/x) {
+
+	print "$_\n" if /$pattern/i;
+	next;
+
+    }
 
     my $ts = str2time($+{date});
 
@@ -38,7 +45,8 @@
     foreach (grep { ($ts - $_) > 60 } keys %removed) {
 
 	foreach (@{delete $removed{$_}}) {
-	    print join "\n", @{delete $msglog{$_}}, "", "";
+	    print @{delete $msglog{$_}}, "\n"
+		if /$pattern/i ~~ @{$msglog{$_}};
 	}
     }
 
@@ -47,5 +55,6 @@
 
 # the rest 
 foreach (values %msglog) {
-    print join "\n", @$_, "", "";
+    print join @$_, "\n"
+	if /$pattern/ ~~ @{$msglog{$_}};
 }