Programas diferentes (e diferentes versões do programa) podem usar diferentes implementações de regex. Tente reduzir ou dividir sua parte de regex por peça para saber qual recurso é suportado / não é suportado.
Por exemplo, eu preciso remover o especificador grupo que não captura ?:
do seu exemplo para que meu GNU grep possa ser executado como esperado no Solaris 11.
Ou você pode tentar substituir -E
por -P
para usar Perl regex engine que, no meu caso, faz meu GNU grep capaz de rodar seu regex sem modificações adicionais.
route | grep -Po "(?:((\w|\.|\*)+\s+)){7}([^ .]+[0-9]+)$"
Nota: GNU grep no Solaris 11 está localizado em /usr/gnu/bin/grep