Рассмотрим вход:
=sec1=
some-line
some-other-line
foo
bar=baz
=sec2=
c=baz
Если я хочу обработать только = sec1 =, я могу, например, закомментировать раздел:
sed -e '/=sec1=/,/=[a-z]*=/s:^:#:' < input
... ну, почти.
Это будет прокомментировать строки, включая строки "= sec1 =" и "= sec2 =", и результат будет примерно таким:
#=sec1=
#some-line
#some-other-line
#
#foo
#bar=baz
#
#=sec2=
c=baz
Мой вопрос: Самый простой способ исключить начальную и конечную строки из /START/,/END/range в sed?
Я знаю, что для многих случаев уточнение "s:" когтей может дать решение в этом конкретном случае, но я следую за общим решением здесь.
В " Sed - введение и учебник" Брюс Барнетт пишет: "Я покажу вам, как ограничить команду до, но не включая строку, содержащую указанный шаблон.", но я не смог найти, где он на самом деле показывает это.
В ПОЛЕЗНЫЕ ОДНОГРАНИЧНЫЕ СЦЕНАРИИ ДЛЯ СЕПА" Составив Эрика Пемца, я мог бы найти только инклюзивный пример:
# print section of file between two regular expressions (inclusive)
sed -n '/Iowa/,/Montana/p' # case sensitive