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”).
greprobi wyrażenia regularne POSIX. Są to podstawowe wyrażenia regularne (BRE) i rozszerzone wyrażenia regularne (ERE, jeśli grepjest używane z -Eopcją). Zobacz instrukcję re_formatlub regexpodobną instrukcję, grepdo 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 grepz opcją grepspecyficzną dla GNU -P.
Zauważ też, że domyślnie grepzwraca linie , a nie podciągi z linii. Ponownie, z GNU grep(i niektórymi innymi grepimplementacjami), możesz użyć tej -oopcji, aby uzyskać tylko te bity, które pasują do podanego wyrażenia z każdej linii.
Należy zauważyć, że zarówno -Pi -osą niestandardowe rozszerzenia specyfikacji POSIX zgrep .
Jeśli nie używasz GNU grep, możesz sedzamiast tego użyć bitu między ciągiem prefixa końcem wiersza:
sed -n 's/.*prefix\(.*\)/\1/p' file
Powoduje to jedynie wydrukowanie wierszy, którym sedudaje 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ń prefixw linii, sedodmiana zwróci ciąg po ostatniej , podczas gdy grepodmiana GNU zwróci ciąg po pierwszej (która obejmie inne wystąpienia prefix).
sedRozwiązaniem byłoby przenośny do wszystkich systemów uniksowych.