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" ] } 我需要得到第二列和第四列,并将其存

早上好

对于ansible,我有以下标准行:

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