grep -v -B1
не работает, потому что пропустит эти строки, но включит их позже (из-за -B1
. Чтобы проверить это, попробуйте команду на:
**document 1** -> 1
**page 1 of 2** -> 2
**document 1**
**page 2 of 2**
**page 3 of 2**
Вы заметите, что строка page 2
будет пропущена, потому что эта строка не будет совпадать, а следующая не будет совпадать.
Есть простое решение awk:
awk '!/page.*of.*/ { if (m) print buf; buf=$0; m=1} /page.*of.*/ {m=0}' 1.txt
Команда awk сообщает следующее:
Если текущая строка имеет эту "страницу ... из", то это будет сигнализировать, что вы не нашли правильную строку. Если вы не нашли эту строку, то вы печатаете предыдущую строку (сохраненную в buf) и сбрасываете буфер в текущую строку (следовательно, вынуждая его отставать на 1)