我在bash中有这个字符串:
str=sdk.iphoneos4.1.sdk
我想要一个带有'4.1'的变量
有没有办法解析bash中的float / double值?
答案 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