%20%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
私は 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以上。