1

任何人都可以建议一个用于检查版本的正则表达式如果我想检查 1.0.0 版本中的任何更新版本可能是1.0.0-11.0.0-21.0.0-3我只需要检查它是什么更新版本-1 or -2 or -3 1.0.0-11.0.0-2或者1.0.0-3我可以使用什么正则表达式?试过了

sed -ne s/1.0.0\-[0-9]\1/p

谢谢 !

4

3 回答 3

0

这将只留下更新版本号:

echo "1.0.0-1" | sed -e 's/^[1-9][0-9.]*-//'

这将留下领先的'-':

echo "1.0.0-1" | sed -e 's/^[1-9][0-9.]*//'

上面不需要 p 命令,所以我保留了它,并关闭了 -n 选项,但是如果这部分是一些更精细的 sed 脚本,您可以恢复它们。

编辑: OP 显然只是想知道该版本是否包含更新。以下是经典 bourne shell 中的几种方法:

#!/bin/sh
version='1.0.0-1'
case "$version" in
    *-[1-9]*)  # Not a regex, this is a (file) "pattern"
        # Update triggered code here
        ;;
esac

# Or:
if echo "$version" | grep '-[1-9][0-9]*$' >/dev/null ; then
    # Update triggered code here
fi

当然,在其他 shell/环境中还有其他方法可以做到这一点。

于 2013-03-11T15:26:56.577 回答
0

您在这里并不需要正则表达式;只需将字符串拆分为正确的字符:

version=1.0.0-2
major=$(echo $version | cut -d. -f1 )
minor=$(echo $version | cut -d. -f1 )
patchlvl=$(echo $version | cut -d. -f1 | cut -d - -f1 )
build=$(echo $version | cut -d - -f2)
于 2013-03-11T17:39:11.973 回答
0

也许是这样的?:

$ echo "1.0.0-1" | sed -ne 's/1.0.0\(\-[0-9]\)/\1/p'
-1

获取任何版本的更新号的正则表达式将是:

$ echo "1.0.0-1" | sed -ne 's/[0-9]\+\.[0-9]\+\.[0-9]\+\(\-[0-9]\)/\1/p'
-1

诀窍是捕获您想要的输出\(并将\)括号分组以及用于\1在命令的替换部分中输出模式。

于 2013-03-11T15:19:55.200 回答