2017-08-28 113 views
0

我有一个变量,我需要解析拉出一个版本字符串,有没有办法做到这一点?下面是一个可变变量的例子。有没有一种方法来grep或解析一个变量

--xxx 1.2.3-102 --yyy 2.5.10-47 --zzz 10.4.2-193 

更新:添加ansible任务格式

--- 

- hosts: localhost 
    tasks: 
    - name: Get Version 
    shell: echo '{{ version }}' 
    register: results 
    - set_fact: 
     value: "{{ results.stdout | regex_search(regexp,'') }}" 
    vars: 
     regexp: '' 
    - debug: 
     var: value 
+0

你需要使用正则表达式 – Shaybi

回答

1

后 “--yyy” 想起来的版本号,改变正则表达式根据需要为任务:

- hosts: localhost 
    tasks: 
    - name: Get Version 
    shell: echo '--xxx 1.2.3-102 --yyy 2.5.10-47 --zzz 10.4.2-193' 
    register: results 
    - name: set regex 
    set_fact: 
     re: '--yyy\s+(?P<digit>\d+\.\d+\.\d+-\d+)' 
    - set_fact: 
     value: "{{ results.stdout | regex_search(re, '\\g<digit>') }}" 
    - debug: 
     var: value[0] 
+0

这是我所需要的!非常感谢! – bc81

0

| mp解决方案非常适合最新版本的ansible,不幸的是我必须使用ansible pre 2.0(1.9.6),这似乎并不支持regex_search出于某种奇怪的原因。

在这种情况下,我将使用以下

"{{ results | regex_replace ('((xxx|yyy)\\s[\\S]+)|(--|zzz|\\s)','') | join }}" 
相关问题