строки sed после совпадения и перед следующим совпадением

строки sed после совпадения и перед следующим совпадением

Как получить все строки после совпадающего слова до следующего совпадающего слова?

Например, мой ввод выглядит следующим образом.

1
2
3

5
6

и мне нужно sedот1к5и в моем выводе мне нужно включить1но я не хочу включать *5* и остальные строки.

Если мой файл не содержит5, мне нужно дописать оставшиеся строки до конца.

ПРИМЕЧАНИЕ:Я увидел ссылку, которая выглядит как дубликат моего вопроса, под названием:Показывать только текст между 2 совпадающими шаблонамино это не ответ на мой вопрос. Ответы там не включали способ обработки, если второго совпадения нет в файле.

решение1

sed '/1/,/5/!d;/5/d'

Возвращает строки, начиная со строки, содержащей 1до следующей строки после той, которая содержит (не включая ее). Если после строки, 5содержащей , нет строки, содержащей , то будет напечатано с первой строки, содержащей , до конца файла.511

Обратите внимание, что будут напечатаны все соответствующие разделы.

Если раздел только один или вас интересует только первый, можно воспользоваться другим подходом:

sed -n '/1/,$!d; /5/q; p'

Это означает, sedчто чтение прекратится после того, как будет найдена цифра 5 в той же строке или после первой строки, содержащей 1.

Связанный контент