2017-08-28 109 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 }}" 
相關問題