i have a log file of a webbap which logs in the following pattern:
2011-08-14 21:10:04,535 blablabla ERROR blablabla
bla
bla
bla
bla
2011-08-14 21:10:04,535 blablabla ERROR blablabla
bla
bla
bla
bla
2011-08-14 21:10:04,535 blablabla ERROR blablabla
bla
bla
bla
bla
what i need is to print everything between the ERROR pattern but only the first occurrence :
2011-08-14 21:10:04,535 blablabla ERROR blablabla
bla
bla
bla
bla
$ cat infile
2011-08-14 21:10:04,535 blablabla ERROR Exception1 blablabla
bla
bla
bla
bla
2011-08-14 21:10:04,535 blablabla ERROR Exteption2 blablabla
bla
bla
bla
bla
2011-08-14 21:10:04,535 blablabla ERROR Exception1 blablabla
bla
bla
bla
bla
2011-08-14 21:10:04,535 blablabla ERROR Exception3 blablabla
bla
bla
bla
$ sed -ne '/ERROR/I,/ERROR/I { H; b }; x; s/^\n//; s/\(.*\)\n.*/\1/; p; q' infile
2011-08-14 21:10:04,535 blablabla ERROR Exception1 blablabla
bla
bla
bla
bla
---------- Post updated at 05:19 PM ---------- Previous update was at 05:12 PM ----------
The above doesnt work as expected. The Exception1 is just an example. This command will run as a script and the pattern is a variable. What i need is to separate the errors and store an example of it in a file. The errors are different so i have to use the description of the error (i.e. Exception1) as a pattern.