Печать строк на две строки выше рисунка


2

Как я могу напечатать содержимое файла минус все, включая и ниже строки над первым появлением шаблона?

Скажите, что образец «^ предыдущий» в строке 15; тогда я хотел бы напечатать строки 1-13.


в другом вопросе нет упоминания об исключении строки над матчем
Toothrot

Пожалуйста, приведите пример
Ройма

@roaima, пример чего? Я уже привел пример.
Зубной рот

Вы не привели пример. Вы сказали нам, что вы хотите. Пожалуйста, включите короткий пример файла, который содержит желаемый шаблон исключения, а затем покажите желаемый результат.
Ройма

1
@roaima, второй абзац является примером. если вы хотите другой пример, вы должны указать причину.
Toothrot

Ответы:



4

sed может сделать все это самостоятельно:

sed -n '$!N;/.*PATTERN.*/q;P;D' infile

Это очень просто: включите бесшумный режим, используйте скользящее окно (с помощью Nи D, чтобы всегда было две строки в пространстве шаблона), используйте qпри обнаружении PATTERNиного, Pнаберите первую строку в пространстве шаблона и перезапустите цикл.

С gnu sedним еще короче, поскольку он может Qработать без автопечати, поэтому вы можете пропустить беззвучный режим:

sed  '$!N;/.*PATTERN.*/Q;P;D' infile
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.