2013-03-26 2 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

ответ

1

Другой способ сделать это с Grep:

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

+0

У нас есть победитель. – Det

+0

Настоящие победители не используют группы захвата, когда они не нужны –

+1

@sputnick, почему вы так расстроились? Это немного проще и работает в этой конкретной ситуации, lol. – Det

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

С СЕПГ:

vmware-installer -l | sed -n 's/[^ ]* *\(.*\)\.[0-9]*/\1/p' 
Смежные вопросы