Bash: извлечь двойной из строки - PullRequest
0 голосов
/ 21 октября 2010

У меня есть эта строка в bash:

str=sdk.iphoneos4.1.sdk

, и я хотел бы иметь переменную с '4.1' в ней

есть ли способ для анализа значения с плавающей запятой / doubleв баш?

Ответы [ 3 ]

2 голосов
/ 21 октября 2010

В Bash 3.2 или выше:

str=sdk.iphoneos4.1.sdk
pattern='[0-9]+\.[0-9]+'
[[ $str =~ $pattern ]]
echo ${BASH_REMATCH[0]}
1 голос
/ 21 октября 2010

при условии отсутствия других цифр в другом месте

$ str=sdk.iphoneos4.0.0.1.sdk
$ echo $str | grep -Po '(\d+.*\d+)(?=\.)'
4.0.0.1
1 голос
/ 21 октября 2010

Предполагая, что окружающий текст всегда остается неизменным:

str=${str#sdk.iphoneos}
str=${str%.sdk}

Это менее переносимый (только bash), но принимает все вместо iphoneos:

shopt -s extglob
str=${str##sdk.*([a-z])}
str=${str%.sdk}
...