Eine Alternative awk
oder ein nicht standardmäßiges Tool ist die Verwendung von GNU grep
für seine kontextbezogenen Greps. Mit GNU grep
können Sie die Anzahl der Zeilen nach einer positiven Übereinstimmung, mit -A
der gedruckt werden soll, und die Anzahl der vorhergehenden Zeilen, mit denen gedruckt werden soll, angeben. -B
Beispiel:
[davisja5@xxxxxxlp01 ~]$ cat test.txt
Ignore this line, please.
This one too while you're at it...
[2014-04-07 23:59:58] CheckForCallAction [ERROR] Exception caught in +CheckForCallAction :: null
--Checking user--
Post
[2014-04-08 00:00:03] MobileAppRequestFilter [DEBUG] Action requested checkforcall
we don't
want these lines.
[davisja5@xxxxxxlp01 ~]$ egrep "^\[2014-04-07 23:59:58\]" test.txt -A 10000 | egrep "^\[2014-04-08 00:00:03\]" -B 10000
[2014-04-07 23:59:58] CheckForCallAction [ERROR] Exception caught in +CheckForCallAction :: null
--Checking user--
Post
[2014-04-08 00:00:03] MobileAppRequestFilter [DEBUG] Action requested checkforcall
Die oben erzählt im Wesentlichen grep
die 10.000 Zeilen zu drucken , die der Linie folgen , die das Muster übereinstimmt Sie wollen an beginnen, effektiv Ihre Ausgabe zu machen beginnen , wo Sie es und geht bis zum Ende (hoffentlich) , während der zweiten wollen , sind egrep
in der Die Pipeline weist sie an, nur die Zeile mit dem Endbegrenzer und den 10.000 Zeilen davor zu drucken. Das Endresultat dieser beiden beginnt dort, wo Sie wollen, und geht nicht dort vorbei, wo Sie es befohlen haben, damit aufzuhören.
10.000 ist nur eine Zahl, die ich mir ausgedacht habe. Sie können sie jederzeit in eine Million ändern, wenn Sie der Meinung sind, dass Ihre Ausgabe zu lang sein wird.