Bash Shell에서 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이상.