2013-03-26 83 views
2

我有這樣的:提取版本號子串

Product Name   Product Version  
==================== ==================== 
vmware-workstation 9.0.2.1031769 

我可以用得到vmware-workstation部分:

$ vmware-installer -l | grep -Po "(?=v)[^ ]*(?=)" 

如何獲得的版本號部分(不包括構建,這意味着剛剛9.0.2 )?

+0

'(\ d + \。)+ \ d +'然後只使用捕獲組? – Patashu 2013-03-26 00:27:43

回答

1

使用grep做的另一種方式:

vmware-installer -l | grep -Po "(\d+\.){2}\d+"

+0

我們有一個贏家。 – Det 2013-03-26 12:13:27

+0

真正的獲勝者在不需要時不使用捕獲組 – 2013-03-26 13:31:51

+1

@sputnick,爲什麼你會這麼不高興?這只是稍微簡單一點,在這種特殊情況下工作,哈哈。 – Det 2013-03-26 13:40:59

1
$ vmware-installer -l | grep -Po "^v\S+\s+\K\d+\.\d+\.\d+" 
9.0.2 

$ vmware-installer -l | grep -Po "(?:\d+\.){2}\d+" 
9.0.2 

這樣的:沒有必要

(?:) 

避免捕獲組

1

隨着SED:

vmware-installer -l | sed -n 's/[^ ]* *\(.*\)\.[0-9]*/\1/p'