正規表現にはさまざまな種類があります。表示しているのは、Perlに似た正規表現(PCRE、「Perl Compatible Regular Expression」)です。
grep
POSIX正規表現を行います。これらは、基本的な正規表現(BRE)と拡張正規表現(ERE、オプションgrep
と一緒に使用する -E
場合)です。お使いのシステムでマニュアルが参照しているマニュアル、re_format
またはregex
それに類するマニュアルgrep
、またはリンク先のPOSIX標準テキストを参照してください。
GNUを使用する場合、GNU 固有のオプションgrep
を使用するgrep
と、Perlのような正規表現を使用できます。grep
-P
また、行のサブストリングではなく、デフォルトで行をgrep
返すことに注意してください。繰り返しますが、GNU (およびその他の実装)では、オプションを使用して、各行から指定された式に一致するビットのみを取得できます。grep
grep
-o
両方のことに注意してください-P
とは、-o
非標準の拡張であるのPOSIX仕様grep
。
GNUを使用していない場合はgrep
、sed
代わりに使用して、文字列prefix
と行末の間のビットを取得できます。
sed -n 's/.*prefix\(.*\)/\1/p' file
これはsed
、指定された置換を適用することに成功した行のみを印刷することです。置換は、式(BRE)に一致する行全体を、stringの後にある部分に置き換えますprefix
。
prefix
行に複数のインスタンスがある場合、sed
バリエーションは最後grep
の文字列の後に文字列を返し、GNU バリエーションは最初の文字列の後に文字列を返します(これにはのその他のインスタンスが含まれますprefix
)。
このsed
ソリューションは、すべてのUnixライクシステムに移植可能です。