Ответ 1
Попробуйте awk:
awk -v nlines=2 '/^Exception/ {for (i=0; i<nlines; i++) {getline}; next} 1'
Есть ли способ с Grep использовать ключ -v для игнорирования строки и следующего количества строк после нее. Его в основном для фильтрации исключений из файла журнала i.e.
Valid log entry 1
Exception exceptionname
at a.b.c
at d.e.f
...
Valid log entry 2
grep, чтобы произвести:
Valid log entry 1
Valid log entry 2
Я пробовал grep -v Exception -A 2
но это не работает.
Любые идеи будут оценены.
Попробуйте awk:
awk -v nlines=2 '/^Exception/ {for (i=0; i<nlines; i++) {getline}; next} 1'
sed -n '/^Exception/,+2!p' filename
В вашем случае вы можете указать grep
также игнорировать любые строки, содержащие ведущие пробелы:
grep -v 'Exception|^\s'
Улучшение на glenn jackman's, путем подачи некоторых команд вы можете получить до/после behaivour:
awk -v nlines_after=5 '/EXCEPTION/ {for (i=0; i<nlines_after; i++) {getline};print "EXCEPTION" ;next} 1' filename.txt|\
tac|\
awk -v nlines_before=1 '/EXCEPTION/ {for (i=0; i<nlines_before; i++) {getline}; next} 1'|\
tac