Andrew Andrew - 7 months ago 40
Bash Question

Grep ignore multiple lines

Is there a way with Grep to use the -v switch to ignore a line and the next number of lines after it. Its basically to filter exceptions from a log file i.e.

Valid log entry 1
Exception exceptionname
at a.b.c
at d.e.f
...
Valid log entry 2


grep it to produce :

Valid log entry 1
Valid log entry 2


I have tried
grep -v Exception -A 2


but this doesn't work.

Any ideas would be appreciated.

Answer

Try awk:

awk -v nlines=2 '/^Exception/ {for (i=0; i<nlines; i++) {getline}; next} 1'