使用Bash脚本从字符串中提取版本号

时间:2016-01-29 00:35:24

标签: bash

我想从以下字符串中获取版本号:

mk5-VCC.6.26.exported.sqsh

版本号是6.26号码。到目前为止,我使用了一个sed命令如下:

echo "mk5-VCC.6.26.exported.sqsh" |
sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/'

如何删除最后一个点?

4 个答案:

答案 0 :(得分:0)

您可以使用以下命令:

echo "mk5-VCC.6.26.exported.sqsh" | cut -d"." -f2,3

打印:

6.26

答案 1 :(得分:0)

使用sed,您可以使用:

echo "mk5-VCC.6.26.exported.sqsh" | sed -e 's/^.*[.]\([0-9][.][0-9]*\).*$/\1/'

<强>输出

6.26

答案 2 :(得分:0)

使用Bash正则表达式:

#!/bin/bash
s='mk5-VCC.6.26.exported.sqsh'
[[ $s =~ [0-9]+\.[0-9]+ ]]
echo "$BASH_REMATCH"

使用grep:

echo "$s" |grep -o '[0-9]\+\.[0-9]\+'

答案 3 :(得分:0)

使用参数展开时,假设数字在第一个.之后开始,并且后面有两个.

$ var='mk5-VCC.6.26.exported.sqsh'
$ var="${var#*.}"
$ echo $var
6.26.exported.sqsh
$ var="${var%.*.*}"
$ echo $var
6.26