У меня есть эта строка в bash:
str=sdk.iphoneos4.1.sdk
, и я хотел бы иметь переменную с '4.1' в ней
есть ли способ для анализа значения с плавающей запятой / doubleв баш?
В Bash 3.2 или выше:
str=sdk.iphoneos4.1.sdk pattern='[0-9]+\.[0-9]+' [[ $str =~ $pattern ]] echo ${BASH_REMATCH[0]}
при условии отсутствия других цифр в другом месте
$ str=sdk.iphoneos4.0.0.1.sdk $ echo $str | grep -Po '(\d+.*\d+)(?=\.)' 4.0.0.1
Предполагая, что окружающий текст всегда остается неизменным:
str=${str#sdk.iphoneos} str=${str%.sdk}
Это менее переносимый (только bash), но принимает все вместо iphoneos:
bash
iphoneos
shopt -s extglob str=${str##sdk.*([a-z])} str=${str%.sdk}