Reguläre Ausdrücke gibt es in vielen verschiedenen Geschmacksrichtungen. Was Sie anzeigen, ist ein Perl-ähnlicher regulärer Ausdruck (PCRE, "Perl Compatible Regular Expression").
grep
macht POSIX reguläre Ausdrücke. Dies sind einfache reguläre Ausdrücke (BRE) und erweiterte reguläre Ausdrücke (ERE, falls grep
mit der -E
Option verwendet). Weitere Informationen finden Sie im Handbuch re_format
oder in einem regex
ähnlichen Handbuch, auf das sich Ihr grep
Handbuch auf Ihrem System bezieht, oder in den POSIX-Standardtexten, auf die ich gerade verwiesen habe.
Wenn Sie GNU verwenden grep
, können Sie Perl-ähnliche reguläre Ausdrücke verwenden, wenn Sie grep
die GNU- grep
spezifische -P
Option verwenden.
Beachten Sie auch , dass die grep
Renditen Linien standardmäßig nicht Strings aus Linien. Wiederum können Sie mit GNU grep
(und einigen anderen grep
Implementierungen) die -o
Option verwenden, um nur die Bits zu erhalten, die dem angegebenen Ausdruck aus jeder Zeile entsprechen.
Beachten Sie, dass beide -P
und -o
keine Standarderweiterungen der POSIX-Spezifikation von sindgrep
.
Wenn Sie GNU nicht verwenden grep
, können Sie sed
stattdessen Folgendes verwenden , um das Bit zwischen dem String prefix
und dem Zeilenende abzurufen:
sed -n 's/.*prefix\(.*\)/\1/p' file
Auf diese Weise werden nur die Zeilen gedruckt, sed
auf die die angegebene Ersetzung angewendet werden kann. Die Ersetzung ersetzt die gesamte Zeile, die mit dem Ausdruck (der eine BRE ist) übereinstimmt, durch den Teil davon, der nach der Zeichenfolge auftritt prefix
.
Beachten Sie, dass bei mehreren Instanzen von prefix
in einer Zeile die sed
Variation die Zeichenfolge nach der letztengrep
zurückliefern würde , während die GNU- Variation die Zeichenfolge nach der ersten zurückliefern würde (die die anderen Instanzen von enthält prefix
).
Die sed
Lösung wäre portabel auf alle Unix-ähnlichen Systeme.