wyłączając pierwsze i ostatnie wiersze z sed / START /, / END /
Rozważ wkład:
=sec1=
some-line
some-other-line
foo
bar=baz
=sec2=
c=baz
Jeśli chcę przetwarzać tylko = sec1 = mogę na przykład skomentować sekcję przez:
sed -e '/=sec1=/,/=[a-z]*=/s:^:#:' < input
... cóż prawie.
Spowoduje to skomentowanie liniiwłącznie z „= sec1 =” i „= sec2 =” linie, a wynikiem będzie coś w stylu:
#=sec1=
#some-line
#some-other-line
#
#foo
#bar=baz
#
#=sec2=
c=baz
Moje pytanie brzmi:Jaki jest najłatwiejszy sposób wykluczenia linii początkowej i końcowej z / START /, / END / zakres w sed?
Wiem, że w wielu przypadkach udoskonalenie pazurów „s :::” może dać rozwiązanie w tym konkretnym przypadku, ale jestem tutaj po ogólnym rozwiązaniu.
W "Sed - Wprowadzenie i samouczek„Bruce Barnett pisze:„ Pokażę ci później, jak ograniczyć komendę do, ale nie włącznie z linią zawierającą określony wzorzec. ”, Ale nie byłem w stanie znaleźć, gdzie faktycznie to pokazuje.
W "UŻYTECZNE SKRYPTY JEDNORAZOWE DLA SED„Opracowany przez Erica Pementa, mogłem znaleźć tylko inkluzywny przykład:
# print section of file between two regular expressions (inclusive)
sed -n '/Iowa/,/Montana/p' # case sensitive