Ответ 1
Используйте стандартный набор символов или POSIX-совместимую нотацию:
[0-9]
[[:digit:]]
Как прочитано в Поиск только чисел в начале имени файла с регулярным выражением:
\d
и\w
не работают в регулярных выражениях POSIX, вы можете использовать[:digit:]
хотя
поэтому ваше выражение должно быть одним из следующих:
regex="AAA \(bbb [0-9]+\) CCC"
# ^^^^^^
regex="AAA \(bbb [[:digit:]]+\) CCC"
# ^^^^^^^^^^^^
Все вместе, ваш script может быть следующим:
#!/bin/bash
s="AAA (bbb 123) CCC"
regex="AAA \(bbb [[:digit:]]+\) CCC"
if [[ $s =~ $regex ]]; then
echo "$s matches $regex"
else
echo "$s doesn't match $regex"
fi
Пусть запустите его:
$ ./digits.sh
AAA (bbb 123) CCC matches AAA \(bbb [[:digit:]]+\) CCC