ANSIBLE-如何使用stdout_lines按列筛选创建数组



早上,

有了ansible,我有了这个stdout_lines:

ok: [localhost] => {
"msg": [
"1 peot 11135198 NY",
"1 LIOS 106075056 berlin",
"1 EASD 10828842 london",
"1 APES 20789896 local",
"1 PZSA 21705924 paris"
]
}

我需要获取第二列和第四列,并将其存储在一个数组中。但我并没有在列中找到带filter的例子。

那么,什么是更好的解决方案呢?你在金贾?

谢谢你的帮助。

Q:"我需要获得第二列和第四列,并将其存储在数组中。">

A:可以使用regex_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

给出

"myarray": [
"peot NY", 
"LIOS berlin", 
"EASD london", 
"APES local", 
"PZSA paris"
]

这就是你要找的吗?

我试图拒绝您的代码,但有什么东西让我逃脱了。用于获取find result.stdout_lines:的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

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"
]
}

我不明白为什么我选错了专栏。

最新更新