Unix で可変 (変更可能) 文字列をチェックするにはどうすればいいですか?

Unix で可変 (変更可能) 文字列をチェックするにはどうすればいいですか?

私は Bash シェルで Unix を使用しており、それが次の形式であることを確認したいです。

[0-9*][,[0-9*]*]

したがって、次の文字列はすべて有効になります。

  • 141,325,562
  • 65
  • 659,948,8465,9853,2659,156,884,351,0,451,01,10

私の Unix はかなり基本的なものなので、どんな助けでもいただければ幸いです。

答え1

bashzshまたはのシェル変数の内容に一致させるにはksh93:

re='^[0-9]+(,[0-9]+)*$'
[[ $string =~ $re ]] && echo matches

POSIX 的には:

case $string in
  ("" | *[!,0-9]* | ,* | *, | *,,*) ;;
  (*) echo matches;;
esac

ボーンリー:

expr " $string" : ' [0-9]\{1,\}\(,[0-9]\{1,\}\)*$' > /dev/null &&
  echo matches

入力行を一致させるには:

grep -xE '[0-9]+(,[0-9]+)*'

+(またはBREの同等のもの\{1,\})を使用して一致させます1またはそれ以上の数字。*一致する0以上。

答え2

必要な正規表現はおそらく次のようになります:

[0-9]*[,[0-9]+]*

さらに、このツールを使用すると、正規表現をその場でチェックできます。出典:https://regex101.com/

関連情報