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

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

Ich möchte mit dem Grepping aus den Zeilen mit CK beginnen am Ende der Zeile und stoppen Sie das Grepping, wenn die Zeile D hat Am Ende. Ich habe versucht grep "$CK" "$D" file..txt , aber es hat nicht funktioniert.

Eingabe:

kkkkkkkkkkk   
jjjjjjjjjjjjjjjjjj  
gggggggggggg/CK  
JHGHHHHHHHH   
HJKHKKLKLLL   
JNBHBHJKJJLKKL  
JLKKKLLKJLKJ/D  
GGGGGGGGGGGGGG  
GGGGGGGGGGGGGG

Die gewünschte Ausgabe:

gggggggggggg/CK  
JHGHHHHHHHH   
HJKHKKLKLLL   
JNBHBHJKJJLKKL  
JLKKKLLKJLKJ/D

Akzeptierte Antwort:

Verwenden Sie besser awk oder sed

awk '/CK$/,/D$/' file.txt

ODER

sed -n '/CK$/,/D$/p' file.txt

Wenn Sie auf grep bestehen, finden Sie hier einen GNU-Grep-Weg

grep -oPz '(?s)(?<=n)N+CKn.*?D(?=n)' file.txt

Hier

-P aktiviert perl-regexp

-z setzt den Zeilentrenner auf NUL. Dies zwingt grep, die gesamte Datei als eine einzige Zeile zu sehen

-o druckt nur übereinstimmende

(?s) aktiviert PCRE_DOTALL, also . findet alle Zeichen oder Zeilenumbrüche

N passt auf alles außer newline

.*? findet . im Non-Greedy-Modus

(?<=..) ist eine Look-Behind-Assertion

(?=..) ist eine vorausschauende Assertion


Linux
  1. Unterschied zwischen Gerätedatei und Gerätetreiber

  2. Suchen und ersetzen Sie Text in einer Datei zwischen einem Zeilenbereich mit sed

  3. Unterschied zwischen Gerätedatei und Gerätetreibern

  4. Ändern Sie die Reihenfolge der Zeilen in einer Datei

  5. grep Paare von Mustern und Datei

So löschen Sie leere Zeilen in Dateien mit Grep, Sed und Awk

Text zwischen zwei bestimmten Zeilen extrahieren?

Lesen von Grep-Mustern aus einer Datei?

Unix Sed Tutorial:Drucken von Dateizeilen mit Adresse und Mustern

Unix Sed Tutorial:Löschen Sie Dateizeilen mit Adresse und Mustern

Wie teilt man Dateien zwischen Ubuntu und Windows 10?