Соответствие между линиями между шаблонами, включая любую границу, является стандартным селектором диапазона в sed:
sed -n -e '/pattern1/,/pattern2/p' example.txt
В зависимости от того, насколько производительность -критична для вас (насколько велики файлы ), я, вероятно, поленюсь и воспользуюсь вторым проходом, чтобы удалить маркеры pattern2:
cat example.txt \
| sed -n -e '/pattern1/,/pattern2/p' \
| sed -e '/pattern2/d'
(Да, это бесполезное использование cat, потому что я предпочитаю удобочитаемость объединения нескольких конвейерных фильтров потере производительности,и я не уверен прямо сейчас, является ли < example.txt | sed... | sed...
мандатом POSIX или просто расширением, которое присутствует в bash и zsh.)
В дополнение к ответу @jdhao вы можете использовать вместо этого событие CursorHold
, которое использует значение updatetime
в качестве тайм-аута и срабатывает всякий раз, когда никакая клавиша не нажата.
Например:
autocmd CursorHold * echon ''