Mike Taylor dismisses Perl with a pithy reference to a section of its excellent documentation1. For some reason, I mis-remembered that he was complaining about the flip-flop operator rather than context in general.
So, I’ve come to defend the flip-flop operator, and the opposition hasn’t turned up! Oh well, never mind.
Scanning Logfiles
So, say your logfile looks something like this:
... 100,000 lines ... 10:22:25.279 The first interesting line ... 30 more interesting lines ... 10:22:25.772 Another interesting line 10:22:25.772 The last interesting line 10:22:25.779 And then this line isn't interesting any more ... 100,000 lines ...
If you specify the beginning timestamp and end timestamp then you will get one uninteresting line which you can strip with head -n-1.
And that is it. Pretty easy eh?
jared@localhost $ cat flip-flop.muse \ > | perl -ne 'print if /^10:22:25.279/ .. /^10:22:25.779/' \ > | head -n-1 \ > | mail jared 10:22:25.279 The first interesting line ... 30 more interesting lines ... 10:22:25.772 Another interesting line 10:22:25.772 The last interesting line
Notes:
In a regex I often use an unescaped period (.) to match a period if it doesn’t matter like here
And for anyone thinking useless use of cat… it’s deliberate.
1. With impressive inconsistency, he later on says that Perl is a contender to be His Favourite Language which is why the alternative title for this post was Why Mike Taylor is not my Favourite Blogger.
Just kidding Mike.