Le espressioni regolari sono disponibili in molti gusti diversi. Quello che stai mostrando è un'espressione regolare simile al Perl (PCRE, "Espressione regolare compatibile Perl").
grep
fa espressioni regolari POSIX. Queste sono espressioni regolari di base (BRE) ed espressioni regolari estese (ERE, se grep
utilizzato con l' -E
opzione). Consultare il manuale per re_format
o regex
qualsiasi altro manuale simile a cui grep
fa riferimento il manuale sul proprio sistema o i testi POSIX standard a cui ho appena collegato.
Se usi GNU grep
, saresti in grado di usare espressioni regolari simili al Perl se lo utilizzassi grep
con l' opzione grep
specifica GNU -P
.
Si noti inoltre che grep
restituisce le linee per impostazione predefinita, non le sottostringhe dalle linee. Ancora una volta, con GNU grep
(e alcune altre grep
implementazioni), è possibile utilizzare l' -o
opzione per ottenere solo i bit che corrispondono all'espressione data da ciascuna riga.
Si noti che entrambe -P
e -o
sono estensioni non standard della specifica POSIX digrep
.
Se non si utilizza GNU grep
, è possibile utilizzare sed
invece per ottenere il bit tra la stringa prefix
e la fine della riga:
sed -n 's/.*prefix\(.*\)/\1/p' file
Quello che fa è stampare solo le linee che sed
riescono ad applicare la sostituzione data a. La sostituzione sostituirà l'intera riga che corrisponde all'espressione (che è un BRE), con il pezzo di essa che si verifica dopo la stringa prefix
.
Si noti che se prefix
su una riga sono presenti più istanze , la sed
variazione restituirà la stringa dopo l' ultima , mentre la grep
variazione GNU restituirà la stringa dopo la prima (che includerebbe le altre istanze di prefix
).
La sed
soluzione sarebbe portatile per tutti i sistemi simili a Unix.