Первая часть вашего регулярного выражения более общая, чем вторая половина, и, поскольку + жадный, второй [0-9] + не будет никогда ничего совпадать соответствует только последней цифре (спасибо Полу) , Если вы можете сделать свою первую половину более конкретной (например, если вы знаете, что она закончится ДВУ), вы можете сделать это.
Есть удивительно крутой инструмент под названием ack , который в основном grep с регулярными выражениями Perl. Я не уверен, возможно ли это использовать в вашем случае, но если вы можете делать то, что вы хотите в Perl, вы можете сделать это с помощью ack.
Edit:
Почему бы просто не опустить конец регулярного выражения? Есть ли ложные срабатывания, если вы делаете это? Если вы, вы можете передать результаты в egrep снова только с первой половиной регулярного выражения.
Похоже, это то, о чем вы спрашиваете: Кроме того, если вы не знаете об этом, флаг -o будет выводить только соответствующую часть данной строки.