bash:从字符串中提取double

时间:2010-10-21 09:12:00

标签: command-line bash shell string parsing

我在bash中有这个字符串:

str=sdk.iphoneos4.1.sdk

我想要一个带有'4.1'的变量

有没有办法解析bash中的float / double值?

3 个答案:

答案 0 :(得分:2)

在Bash 3.2或更高版本中:

str=sdk.iphoneos4.1.sdk
pattern='[0-9]+\.[0-9]+'
[[ $str =~ $pattern ]]
echo ${BASH_REMATCH[0]}

答案 1 :(得分:1)

假设周围的文字始终保持不变:

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

这不太便于移植(仅bash),但接受任何代替iphoneos的内容:

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

答案 2 :(得分:1)

假设其他地方没有其他数字

$ str=sdk.iphoneos4.0.0.1.sdk
$ echo $str | grep -Po '(\d+.*\d+)(?=\.)'
4.0.0.1