GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie wähle ich das erste Auftreten zwischen zwei Mustern aus, die sie enthalten?

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.


Linux
  1. So übertragen Sie Dateien zwischen zwei Computern mit den Befehlen nc und pv

  2. Linien zwischen (und ausschließenden) zwei Mustern drucken?

  3. Zeilen zwischen (und einschließlich) zwei Mustern drucken?

  4. Linux – Wie lösche ich Dateien, die zwischen zwei Mal erstellt wurden?

  5. Wie erstelle ich eine bidirektionale Pipe zwischen zwei Programmen?

So finden Sie den Unterschied zwischen zwei Verzeichnissen mit Diff- und Meld-Tools

So synchronisieren Sie Dateien automatisch zwischen zwei Linux-Servern

So verbinden und teilen Sie Daten zwischen zwei Linux-Systemen

Wie kann ich zwei Abschnitte derselben Datei unterscheiden?

Wie blockiere ich den gesamten Datenverkehr zwischen zwei Schnittstellen?

Wie zeige ich Dateinamen an, die zwei Zeichen enthalten und eines davon c ist?