次のような表現があります。
echo “B1500.00” | egrep '^[(-|+)]?[0-9]+(\.[0-9]{2})?$'
小数点以下の桁数で数値を確認していますが、フィールドに数値以外の項目があるとエラーが発生したいと思います。
上記の表現には何の問題もないようです。 1500.00 や -1500.00 などの実際の数値がある場合、式は数値として返されます。私は何かを見逃していると確信しています。
答え1
egrep
これらの引用符は、一致させる式の一部として渡されるUnicode文字です。
また、最初の文字クラスが正確に欲しいものではないかもしれません。以下を試してください。
echo B1500.00 | egrep '^[-+]?[0-9]+(\.[0-9]{2})?$'
一致するものがなく、
echo 1500.00 | egrep '^[-+]?[0-9]+(\.[0-9]{2})?$'
一致1500.00
私が提供する文字クラスは正確に一致する+
か、-
同時に元の文字クラス|
と開くかっこと閉じ括弧も一致します。私の考えでは、これはおそらくあなたが望むものではありません。
egrep
Costasが指摘したように、次のようにライン全体を一致させ、開始アンカーと終了アンカーを無視したいことがわかります。
echo 1500.00 | egrep -x '[-+]?[0-9]+(\.[0-9]{2})?'