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").
grepmacht POSIX reguläre Ausdrücke. Dies sind einfache reguläre Ausdrücke (BRE) und erweiterte reguläre Ausdrücke (ERE, falls grepmit der -EOption verwendet). Weitere Informationen finden Sie im Handbuch re_formatoder in einem regexähnlichen Handbuch, auf das sich Ihr grepHandbuch 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 grepdie GNU- grepspezifische -POption verwenden.
Beachten Sie auch , dass die grepRenditen Linien standardmäßig nicht Strings aus Linien. Wiederum können Sie mit GNU grep(und einigen anderen grepImplementierungen) die -oOption verwenden, um nur die Bits zu erhalten, die dem angegebenen Ausdruck aus jeder Zeile entsprechen.
Beachten Sie, dass beide -Pund -okeine Standarderweiterungen der POSIX-Spezifikation von sindgrep .
Wenn Sie GNU nicht verwenden grep, können Sie sedstattdessen Folgendes verwenden , um das Bit zwischen dem String prefixund dem Zeilenende abzurufen:
sed -n 's/.*prefix\(.*\)/\1/p' file
Auf diese Weise werden nur die Zeilen gedruckt, sedauf 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 prefixin einer Zeile die sedVariation 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 sedLösung wäre portabel auf alle Unix-ähnlichen Systeme.