我試圖用sed從git describe
的輸出中解析版本號。輸出是以下形式:需要一個可以處理可選子串的正則表達式
vMAJOR.MINOR[-STRING]-REVISION-HASH
MAJOR
,MINOR
,和REVISION
是整數。 STRING
和HASH
是任意字符串,但我只對HASH
感興趣。
例子:
v0.1-alpha-3-g9c8c402
應該返回0 1 3 g9c8c402
v0.4-beta-10-g3187e7f-dirty
應該返回0 4 10 g3187e7f-dirty
v1.0-0-fe35119e
應該返回1 0 0 fe35119e
我本來使用:
sed 's/v\([0-9]*\)\.\([0-9]*\)-.*-\([0-9]*\)-\(.*\)/\1 \2 \3 \4/g'
但是,它只適用於可選子字符串存在時。
啊,我缺少的部分約逃跑''? 'v \([0-9] * \)\。\([0-9] * \) - \?。* - \([0-9] * \) - \(。* \)'工作。第二個短劃線作爲可選的解決方案會導致版本號有時會丟失。 – Merad
哦,是的,這是有道理的,它將包含在'。*'中。感謝您指出了這一點,並很高興能夠提供幫助。 –