Les expressions régulières sont disponibles dans de nombreuses saveurs différentes. Ce que vous montrez est une expression régulière de type Perl (PCRE, "Perl Compatible Regular Expression").
grepfait des expressions régulières POSIX. Ce sont des expressions régulières de base (BRE) et des expressions régulières étendues (ERE, si grepest utilisé avec l' -Eoption). Consultez le manuel de re_formatou regextout autre manuel similaire auquel votre grepmanuel se réfère sur votre système, ou les textes standard POSIX auxquels je viens de faire un lien.
Si vous utilisez GNU grep, vous seriez en mesure d'utiliser des expressions régulières de type Perl si vous grepl' greputilisiez avec l' -Poption spécifique à GNU .
Notez également que greprenvoie les lignes par défaut, pas les sous-chaînes de lignes. Encore une fois, avec GNU grep(et certaines autres grepimplémentations), vous pouvez utiliser l' -ooption pour obtenir uniquement le ou les bits qui correspondent à l'expression donnée de chaque ligne.
Notez que les deux -Pet -osont des extensions non standard de la spécification POSIX degrep .
Si vous n'utilisez pas GNU grep, vous pouvez utiliser à la sedplace pour obtenir le bit entre la chaîne prefixet la fin de la ligne:
sed -n 's/.*prefix\(.*\)/\1/p' file
Ce que cela fait est d'imprimer uniquement les lignes qui sedparviennent à appliquer la substitution donnée. La substitution remplacera la ligne entière qui correspond à l'expression (qui est un BRE), avec le morceau qui se produit après la chaîne prefix.
Notez que s'il y a plusieurs instances de prefixsur une ligne, la sedvariation retournerait la chaîne après la dernière , tandis que la grepvariation GNU retournerait la chaîne après la première (qui inclurait les autres instances de prefix).
La sedsolution serait portable sur tous les systèmes de type Unix.