исключая первую и последнюю строки из sed / START /, / END /
Рассмотрим вход:
=sec1=
some-line
some-other-line
foo
bar=baz
=sec2=
c=baz
Если я хочу обработать только = sec1 =, я могу, например, закомментировать раздел:
sed -e '/=sec1=/,/=[a-z]*=/s:^:#:' < input
... Ну, почти.
Это прокомментирует строкиincluding & Quot; = Sec1 = & Quot; и & quot; = sec2 = & quot; линии, и результат будет что-то вроде:
#=sec1=
#some-line
#some-other-line
#
#foo
#bar=baz
#
#=sec2=
c=baz
Мой вопрос:What is the easiest way to exclude the start and end lines from a /START/,/END/ range in sed?
Я знаю, что во многих случаях уточнение & quot; s ::: & quot; Когти могут дать решение в этом конкретном случае, но я здесь за общим решением.
В & quot;Sed - Введение и учебник& Quot; Брюс Барнетт пишет: "Я покажу вам позже, как ограничить команду до, но не включая строку, содержащую указанный шаблон.", Но я не смог найти, где он на самом деле показывает это.
В & quot;ПОЛЕЗНЫЕ ОДНО-ЛИНИЙНЫЕ СКРИПТЫ ДЛЯ САС& Quot; Составленный Эриком Пиментом, я смог найти только инклюзивный пример:
# print section of file between two regular expressions (inclusive)
sed -n '/Iowa/,/Montana/p' # case sensitive