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").
grep
fait 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 grep
est utilisé avec l' -E
option). Consultez le manuel de re_format
ou regex
tout autre manuel similaire auquel votre grep
manuel 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 grep
l' grep
utilisiez avec l' -P
option spécifique à GNU .
Notez également que grep
renvoie les lignes par défaut, pas les sous-chaînes de lignes. Encore une fois, avec GNU grep
(et certaines autres grep
implémentations), vous pouvez utiliser l' -o
option pour obtenir uniquement le ou les bits qui correspondent à l'expression donnée de chaque ligne.
Notez que les deux -P
et -o
sont des extensions non standard de la spécification POSIX degrep
.
Si vous n'utilisez pas GNU grep
, vous pouvez utiliser à la sed
place pour obtenir le bit entre la chaîne prefix
et la fin de la ligne:
sed -n 's/.*prefix\(.*\)/\1/p' file
Ce que cela fait est d'imprimer uniquement les lignes qui sed
parviennent à 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 prefix
sur une ligne, la sed
variation retournerait la chaîne après la dernière , tandis que la grep
variation GNU retournerait la chaîne après la première (qui inclurait les autres instances de prefix
).
La sed
solution serait portable sur tous les systèmes de type Unix.