excluindo as primeiras e últimas linhas do sed / START /, / END /
Considere a entrada:
=sec1=
some-line
some-other-line
foo
bar=baz
=sec2=
c=baz
Se eu quiser processar apenas = sec1 = posso, por exemplo, comentar a seção por:
sed -e '/=sec1=/,/=[a-z]*=/s:^:#:' < input
... bem, quase.
Isto irá comentar as linhasIncluindo "= sec1 =" e "= sec2 =" linhas, e o resultado será algo como:
#=sec1=
#some-line
#some-other-line
#
#foo
#bar=baz
#
#=sec2=
c=baz
Minha pergunta é:Qual é a maneira mais fácil de excluir as linhas de início e fim de um / START /, / END / range em sed?
Eu sei que para muitos casos o refinamento das garras "s :::" pode dar solução neste caso específico, mas eu estou atrás da solução genérica aqui.
Em "Sed - Uma Introdução e Tutorial"Bruce Barnett escreve:" Eu vou te mostrar mais tarde como restringir um comando, mas não incluindo a linha contendo o padrão especificado. ", Mas eu não consegui encontrar onde ele realmente mostra isso.
No "SCRIPTS DE LINHA ÚTEIS PARA SED"Compilado por Eric Pement, pude encontrar apenas o exemplo inclusivo:
# print section of file between two regular expressions (inclusive)
sed -n '/Iowa/,/Montana/p' # case sensitive