我需要提取版本输出的版本号,如下所示:
Program updated version 7.9
Released on 04-04-2013
我知道如何提取两位数的版本号:
grep -Po '(version )\d+(?:\.\d+){2}')
或任何其他数字的数字。问题是版本号可能具有不同的位数。是否有一个正则表达式我可以使用一组由点分隔的数字组,前提是数字位数未知?
答案 0 :(得分:1)
使用grep
#!/bin/sh
version=$(echo "Program updated version 7.9.9.9" | grep -oP "(?<=version )[^ ]+")
echo $version
输出:
$ ./test.sh
7.9.9.9
awk
#!/bin/sh
version=$(echo "Program updated version 7.9.9.9" | awk '{for(i=1;i<=NF;i++) if ($i=="version") print $(i+1)}')
echo $version
输出:
$ ./test.sh
7.9.9.9