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