Essas aspas são caracteres unicode, que estão sendo passados para egrep
como parte da expressão para corresponder.
Além disso, a primeira classe de caracteres provavelmente não é exatamente o que você deseja, tente:
echo B1500.00 | egrep '^[-+]?[0-9]+(\.[0-9]{2})?$'
que não coincide enquanto
echo 1500.00 | egrep '^[-+]?[0-9]+(\.[0-9]{2})?$'
corresponde a 1500.00
A classe de caractere I que ofereci corresponderá apenas a +
ou -
, enquanto a original também corresponderá a |
e a abertura e fechamento de parentes, o que provavelmente não é o que você queria.
Como Costas apontou, você pode dizer a egrep
que você quer combinar a linha inteira e ignorar as âncoras de início e fim da seguinte forma:
echo 1500.00 | egrep -x '[-+]?[0-9]+(\.[0-9]{2})?'