Esta não é uma expressão regular estendida (ERE). egrep interpretará isso como 123 seguido por >fruit ou juiceomatic (o ? é ignorado) seguido por machine . Isto significa que irá corresponder em:
123>fruitmachine
123>juiceomaticmachine
mas não:
123fruitjuiceomaticmachine
A notação (?>...) é de PCRE e significa grupo atômico sem captura , veja pcresyntax(3) . Você pode usá-los com o GNU grep e com a opção -P .
Se eu entendi corretamente, você precisa que 123 seja seguido por fruit , que pode ser seguido por juiceomatic ou nada. Nesse caso, acho que 123fruit(|juiceomatic)machine é o ERE que você quer.