使用https://regex101.com/文字列にIPアドレスが最初に表示されることを返す正規表現を作成しました。
正規表現:
(?:\d{1,3}\.)+(?:\d{1,3})
区切り文字を含む正規表現:
/(?:\d{1,3}\.)+(?:\d{1,3})/
次のテスト文字列を使用します。
eu-west 140.243.64.99
以下と完全に一致する項目を返します。
140.243.64.99
次のbashスクリプトは、アンカーなどを使用しても生成された正規表現では機能しません。
temp="eu-west 140.243.64.99 "
regexp="(?:\d{1,3}\.)+(?:\d{1,3})"
if [[ $temp =~ $regexp ]]; then
echo "found a match"
else
echo "No IP address returned"
fi
ベストアンサー1
\d
「すべての数字」を言う非標準的な方法です。 Perlから来たようですが、他の多くの言語やユーティリティもPerl互換RE(PCRE)をサポートしています。 (たとえば、Debian StretchのGNU grep 2.27は、通常\w
モードでも同様の単語文字をサポートしています。)
ただし、Bashはこれをサポートしていないため、\d
明示的に[0-9]
orを使用する必要があります[[:digit:]]
。キャプチャしないグループの場合も同様です。(?:..)
自分で使用してください(..)
。
次のように印刷する必要がありますmatch
。
temp="eu-west 140.243.64.99 "
regexp="([0-9]{1,3}\.)+([0-9]{1,3})"
[[ $temp =~ $regexp ]] && echo match