Как получить все строки после совпадающего слова до следующего совпадающего слова?
Например, мой ввод выглядит следующим образом.
1
2
3
5
6
и мне нужно sed
от1к5и в моем выводе мне нужно включить1но я не хочу включать *5* и остальные строки.
Если мой файл не содержит5, мне нужно дописать оставшиеся строки до конца.
ПРИМЕЧАНИЕ:Я увидел ссылку, которая выглядит как дубликат моего вопроса, под названием:Показывать только текст между 2 совпадающими шаблонамино это не ответ на мой вопрос. Ответы там не включали способ обработки, если второго совпадения нет в файле.
решение1
sed '/1/,/5/!d;/5/d'
Возвращает строки, начиная со строки, содержащей 1
до следующей строки после той, которая содержит (не включая ее). Если после строки, 5
содержащей , нет строки, содержащей , то будет напечатано с первой строки, содержащей , до конца файла.5
1
1
Обратите внимание, что будут напечатаны все соответствующие разделы.
Если раздел только один или вас интересует только первый, можно воспользоваться другим подходом:
sed -n '/1/,$!d; /5/q; p'
Это означает, sed
что чтение прекратится после того, как будет найдена цифра 5 в той же строке или после первой строки, содержащей 1
.