ANSIBLE-如何使用标准输出行按列筛选创建数组
早上好 对于ansible,我有以下标准行:ANSIBLE-如何使用标准输出行按列筛选创建数组,ansible,jinja2,Ansible,Jinja2,早上好 对于ansible,我有以下标准行: ok: [localhost] => { "msg": [ "1 peot 11135198 NY", "1 LIOS 106075056 berlin", "1 EASD 10828842 london", "1 APES 20789896 local", "1 PZSA 21705924 paris" ] } 我需要得到第二列和第四列,并将其存
ok: [localhost] => {
"msg": [
"1 peot 11135198 NY",
"1 LIOS 106075056 berlin",
"1 EASD 10828842 london",
"1 APES 20789896 local",
"1 PZSA 21705924 paris"
]
}
我需要得到第二列和第四列,并将其存储在一个数组中。但我找不到列上有过滤器的示例
那么,更好的解决方案是什么?和Ansible ou在金贾2
谢谢你的帮助
问:“我需要获取第二列和第四列,并将其存储在一个数组中。”
答:可以使用regex\u replace
。比如说
- set_fact:
myarray: "{{ stdout_lines|
map('regex_replace', myregex, myreplace)|
list }}"
vars:
myregex: '^\s*(.*)\s+(.*)\s+(.*)\s+(.*)\s*$'
myreplace: '\2 \4'
- debug:
var: myarray
给予
这就是你要找的吗?我试图拒绝你的代码,但有件事让我不知所措。 要获取find result.stdout_行的第2列,请执行以下操作: 摘录:
-rwxr-xr-x 1 root root 11135198 Sep 25 2018 /root/setup/silinstall/nnstall
-rw-r--r-- 1 root root 106075056 Dec 19 14:33 /usr/lib/locale/locale-archive
-rwxr-xr-x 1 root root 10828842 Jan 27 2015 /usr/lib/libsssymm-dmx.so
如果我只需要第一列和第五列,我就这样设置变量
vars:
myregex: '^\s*(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s*$' (number of columns)
myreplace: '\1 \5'
结果是:
"myarray": [
"-rwxr-xr-x 1 Sep",
"-rw-r--r-- 106075056",<-----------why this error ???
"-rwxr-xr-x 1 Jan",
"-rwxr-xr-x. 1 Aug",
"-rwxr-xr-x 1 Sep"
]
}
“myarray”:[
“-rwxr-xr-x 1 Sep”,
“-rw-r--r--106075056”,是的,它工作得很好!谢谢你的帮助!我想我在很多事情上都使用了这个代码!
"myarray": [
"-rwxr-xr-x 1 Sep",
"-rw-r--r-- 106075056",<-----------why this error ???
"-rwxr-xr-x 1 Jan",
"-rwxr-xr-x. 1 Aug",
"-rwxr-xr-x 1 Sep"
]
}