0

我想过滤这个变量 hp 但它打印为方括号和"". 我如何删除方括号""以获得唯一的值。有人可以帮忙吗?我正在寻找正则表达式,但无法找到确切的语法。

srv_make1: '{{ basic_params | from_json | json_query("servers.server_details[*].srv_make") }}'

谢谢

4

2 回答 2

1

我有类似的东西。越来越

["abc"]

为了克服它,必须做两件事:

  • 附加| [0]到 json 查询
  • 使用替换来摆脱"

所以在你的情况下,而不是

srv_make1: '{{ basic_params | from_json | json_query("servers.server_details[*].srv_make") }}'

它看起来像

srv_make1: '{{ basic_params | from_json | json_query("servers.server_details[*].srv_make | [0]") | replace('\"','') }}'
于 2021-05-05T23:34:23.167 回答
0

问:“如何去掉方括号和双引号?”

json_query总是返回一个列表。这取决于debug如何显示列表的任务。例如

  vars:
    srv_make1: [a,b,c]
  tasks:
    - debug:
        var: srv_make1
    - debug:
        msg: "{{ srv_make1|to_yaml }}"

TASK [debug] ***
ok: [localhost] => {
    "srv_make1": [
        "a", 
        "b", 
        "c"
    ]
}

TASK [debug] ***
ok: [localhost] => {
    "msg": "[a, b, c]\n"
}

可以使用template列表并将其写入不带括号和引号的文件中。例如模板

shell> cat srv_make1.conf.j2
{% for item in srv_make1 %}{{ item }} {% endfor %}

带着任务

    - template:
        src: srv_make1.conf.j2
        dest: srv_make1.conf

shell> cat srv_make1.conf
a b c
于 2020-03-23T12:45:22.790 回答