erste und letzte Zeile von sed / START /, / END / ausschließen
Betrachten Sie die Eingabe:
=sec1=
some-line
some-other-line
foo
bar=baz
=sec2=
c=baz
Wenn ich nur = sec1 = verarbeiten möchte, kann ich den Abschnitt beispielsweise folgendermaßen auskommentieren:
sed -e '/=sec1=/,/=[a-z]*=/s:^:#:' < input
... Naja fast.
Dies wird die Zeilen kommentiereneinschließlich "= sec1 =" und "= sec2 =", und das Ergebnis wird ungefähr so aussehen:
#=sec1=
#some-line
#some-other-line
#
#foo
#bar=baz
#
#=sec2=
c=baz
Meine Frage ist:Was ist der einfachste Weg, um die Start- und Endzeilen von einem / START /, / END / Bereich in sed auszuschließen??
Ich weiß, dass in vielen Fällen eine Verfeinerung der "s :::" - Klauen in diesem speziellen Fall eine Lösung ergeben kann, aber ich bin hier hinter der generischen Lösung her.
Im "Sed - Eine Einführung und ein TutorialBruce Barnett schreibt: "Ich werde Ihnen später zeigen, wie Sie einen Befehl auf einschränken können, jedoch ohne die Zeile, die das angegebene Muster enthält.", Aber ich konnte nicht herausfinden, wo er dies tatsächlich zeigt.
In dem "NÜTZLICHE ON-LINE-SCRIPTS FÜR SED"Zusammengestellt von Eric Pement, konnte ich nur das inklusive Beispiel finden:
# print section of file between two regular expressions (inclusive)
sed -n '/Iowa/,/Montana/p' # case sensitive