1

誰かがバージョンをチェックするための正規表現を提案できますか? 1.0.0 リリースの更新バージョンを確認したい場合は、1.0.0-1または1.0.0-2または1.0.0-3、どの更新バージョンである-1 or -2 or -3 1.0.0-1か、1.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 -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 に答える
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 -e 's/^[1-9][0-9.]*-//'

これにより、先頭の「-」が残ります。

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

上記では p コマンドは必要ないのでそのままにして、 -n オプションをオフにしましたが、より複雑な sed スクリプトのこの部分があれば復元できます。

編集:OPは、バージョンに更新が含まれているかどうかを知りたいだけのようです。古典的なボーンシェルでのいくつかの方法を次に示します。

#!/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

もちろん、他のシェル/環境でそれを行う方法は他にもあります。

于 2013-03-11T15:26:56.577 に答える