\d
é uma maneira não padronizada de dizer "qualquer dígito". Eu acho que vem do Perl, e muitas outras linguagens e utilitários suportam REs compatíveis com Perl (PCRE) também. (e, por exemplo, o GNU grep 2.27 no Debian stretch suporta os \w
semelhantes para caracteres de palavras, mesmo no modo normal.)
O Bash não suporta \d
, por isso, você precisa usar explicitamente [0-9]
ou [[:digit:]]
. O mesmo para o grupo que não captura (?:..)
, use apenas (..)
.
Isso deve imprimir match
:
temp="eu-west 140.243.64.99 "
regexp="([0-9]{1,3}\.)+([0-9]{1,3})"
[[ $temp =~ $regexp ]] && echo match