Wie kann ich das erste Vorkommen zwischen zwei Mustern auswählen, die sie enthalten? Vorzugsweise mit sed
oder awk
.
Ich habe:
text
something P1 something
content1
content2
something P2 something
text
something P1 something
content3
content4
something P2 something
text
Ich möchte das erste Vorkommen der Zeilen zwischen P1 und P2 (einschließlich P1-Zeile und P2-Zeile):
something P1 something
content1
content2
something P2 something
Akzeptierte Antwort:
sed '/P1/,/P2/!d;/P2/q'
…würde die Aufgabe portabel mit d
erledigen Löschen aller Zeilen, die !
ausführen nicht in den Bereich fallen, dann q
uitting das erste Mal, wenn es auf das Ende des Bereichs trifft. Es schlägt nicht fehl, wenn P2 P1 vorangeht, und es erfordert keine GNU-spezifische Syntax, um einfach zu schreiben.