Expressões regulares vêm em muitos sabores diferentes. O que você está mostrando é uma expressão regular do tipo Perl (PCRE, "Expressão regular compatível com Perl").
grepfaz expressões regulares POSIX. Essas são expressões regulares básicas (BRE) e expressões regulares estendidas (ERE, se grepusadas com a -Eopção). Consulte o manual para re_formatou regexou qualquer outra coisa semelhante manual do seu grepmanual refere-se em seu sistema, ou os textos padrão POSIX que eu só vinculados.
Se você usa o GNU grep, seria capaz de usar expressões regulares do tipo Perl se usasse grepcom a opção grepespecífica do GNU -P.
Observe também que grepretorna linhas por padrão, não substrings de linhas. Novamente, com o GNU grep(e algumas outras grepimplementações), você pode usar a -oopção para obter apenas os bits que correspondem à expressão especificada de cada linha.
Observe que as extensões -Pe -onão-padrão são a especificação POSIX degrep .
Se você não estiver usando o GNU grep, poderá usar sedpara obter o bit entre a string prefixe o final da linha:
sed -n 's/.*prefix\(.*\)/\1/p' file
O que isso faz é imprimir apenas as linhas que sedconseguem aplicar a substituição fornecida. A substituição substituirá a linha inteira que corresponder à expressão (que é um BRE), pela parte que ocorrer após a sequência prefix.
Observe que, se houver várias instâncias de prefixuma linha, a sedvariação retornará a sequência após a última , enquanto a grepvariação GNU retornará a sequência após a primeira (que incluiria as outras instâncias de prefix).
A sedsolução seria portátil para todos os sistemas do tipo Unix.