私は Bash シェルで Unix を使用しており、それが次の形式であることを確認したいです。
[0-9*][,[0-9*]*]
したがって、次の文字列はすべて有効になります。
- 141,325,562
- 65
- 659,948,8465,9853,2659,156,884,351,0,451,01,10
私の Unix はかなり基本的なものなので、どんな助けでもいただければ幸いです。
答え1
bash
、zsh
またはのシェル変数の内容に一致させるには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以上。