我有一个变量,我需要解析它来取出一个版本字符串,有没有办法做到这一点?以下是ansible变量的示例。
--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 :(得分: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]
答案 1 :(得分:0)
| m-p解决方案适用于最新版本的ansible,不幸的是我必须使用ansible pre 2.0(1.9.6),因为某些奇怪的原因似乎不支持regex_search。
在这种情况下,我将使用以下
"{{ results | regex_replace ('((xxx|yyy)\\s[\\S]+)|(--|zzz|\\s)','') | join }}"