sed
будет использовать первый матч. Поскольку [0-9]*
соответствует не только 3 цифрам 123
, но также 0 цифрам (пустой строке), она будет соответствовать пустой строке, отмеченной здесь круглыми скобками: ()abd 123
, и заменит ее на () ()abd 123
Если вместо этого вы используете одно из:
sed -r 's/[0-9]+/& &/'
sed 's/[0-9][0-9]*/& &/'
, затем вам требуется, чтобы оно соответствовало как минимум 1 di git, и тогда оно будет вести себя так, как вы ожидаете.