Флаги -A
, -B
и -C
заставляют печатать указанное количество строк контекста для каждой строки, которая удовлетворяет условию поиска.Когда вы используете -v
, условие поиска инвертируется, поэтому выбранные строки - это те, которые не соответствуют шаблону.Следовательно, grep -A1 -v foo
печатает все строки, которые не содержат foo
, а также строки, следующие за строками, которые не содержат foo
.
Я понимаю, что это не то, что вы ищетедля, но это способ grep
указан для работы.Насколько я знаю, не существует опции, которая подавляет печать строк после совпадения с шаблоном.
Тем не менее, достаточно просто выполнить это умение, используя awk
:
awk '/foo/{c=2} c{c--;next;} 1'
Обратите внимание, что awk
использует расширенные регулярные выражения Posix, например grep -E
.Регулярное выражение должно быть окружено косой чертой, а это означает, что вам нужно убирать обратную косую черту от любой косой черты, с которой необходимо сопоставить.Кроме этого, он будет очень похож на grep
.