有没有一种方法来grep或解析一个变量
问题描述:
我有一个变量,我需要解析拉出一个版本字符串,有没有办法做到这一点?下面是一个可变变量的例子。有没有一种方法来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
答
后 “--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
答
| mp解决方案非常适合最新版本的ansible,不幸的是我必须使用ansible pre 2.0(1.9.6),这似乎并不支持regex_search出于某种奇怪的原因。
在这种情况下,我将使用以下
"{{ results | regex_replace ('((xxx|yyy)\\s[\\S]+)|(--|zzz|\\s)','') | join }}"
你需要使用正则表达式 – Shaybi