Разные программы (и разные версии указанной программы) могут использовать разные реализации регулярных выражений. Попробуйте уменьшить или разбить ваше регулярное выражение по частям, чтобы узнать, какая функция поддерживается / не поддерживается.
Например, мне нужно удалить спецификатор группы без захвата ?:
Из вашего примера, чтобы мой GNU grep мог работать так, как ожидается в Solaris 11.
Или вы можете попробовать заменить -E
на -P
чтобы использовать механизм регулярных выражений Perl, который, в моем случае, позволяет моему GNU grep запускать ваше регулярное выражение без дальнейших изменений.
route | grep -Po "(?:((\w|\.|\*)+\s+)){7}([^ .]+[0-9]+)$"
Примечание: GNU grep в Solaris 11 находится в /usr/gnu/bin/grep