Wyrażenia regularne występują w wielu różnych smakach. To, co wyświetlasz, to wyrażenie regularne podobne do Perla (PCRE, „wyrażenie regularne zgodne z Perlem”).
grep
robi wyrażenia regularne POSIX. Są to podstawowe wyrażenia regularne (BRE) i rozszerzone wyrażenia regularne (ERE, jeśli grep
jest używane z -E
opcją). Zobacz instrukcję re_format
lub regex
podobną instrukcję, grep
do której odnosi się ten podręcznik w twoim systemie, lub standardowe teksty POSIX, z którymi właśnie się odniosłem.
Jeśli użyjesz GNU grep
, będziesz mógł używać wyrażeń regularnych podobnych do Perla, jeśli użyjesz grep
z opcją grep
specyficzną dla GNU -P
.
Zauważ też, że domyślnie grep
zwraca linie , a nie podciągi z linii. Ponownie, z GNU grep
(i niektórymi innymi grep
implementacjami), możesz użyć tej -o
opcji, aby uzyskać tylko te bity, które pasują do podanego wyrażenia z każdej linii.
Należy zauważyć, że zarówno -P
i -o
są niestandardowe rozszerzenia specyfikacji POSIX zgrep
.
Jeśli nie używasz GNU grep
, możesz sed
zamiast tego użyć bitu między ciągiem prefix
a końcem wiersza:
sed -n 's/.*prefix\(.*\)/\1/p' file
Powoduje to jedynie wydrukowanie wierszy, którym sed
udaje się zastosować dane podstawienie. Podstawienie zastąpi całą linię pasującą do wyrażenia (którym jest BRE) fragmentem występującym po ciągu prefix
.
Zauważ, że jeśli jest kilka wystąpień prefix
w linii, sed
odmiana zwróci ciąg po ostatniej , podczas gdy grep
odmiana GNU zwróci ciąg po pierwszej (która obejmie inne wystąpienia prefix
).
sed
Rozwiązaniem byłoby przenośny do wszystkich systemów uniksowych.