ansible - 如何使用ansible中的regex_replace转换此数据格式

标签 ansible ansible-2.x

- hosts: localhost
  connection: local
  gather_facts: no
  vars:
   input: |-
      404135 ARP requests sent
      6762 ARP replies sent
      6762 ARP requests received
      0 ARP requests ignored
  tasks:
    - debug: var=input

    - set_fact:
        var2: "{{ '404135 ARP requests sent' | map('regex_replace','(\\d+)ARP requests sent','ARPRequestsSent: \\1') }}"

我希望使用正则表达式替换插件来操作并转换为 JSON 格式,我们可以操作数据,以及如何更改字符串位置并获得所需的输出格式

{
"ARP_Requests_Sent": "404135",
"ARP_replies_sent": "6762",
"ARP_requests_received": "6762",
"ARP_requests_ignored": "0"
}

任何线索都有帮助

最佳答案

下面的任务可以完成这项工作

    - set_fact:
        var2: "{{ dict(my_keys|zip(my_vals)) }}"
      vars:
        my_lines: "{{ input.splitlines() }}"
        my_regex: '^(.*?) (.*)$'
        replace_val: '\1'
        replace_key: '\2'
        my_keys: "{{ my_lines|
                     map('regex_replace', my_regex, replace_key)|
                     list }}"
        my_vals: "{{ my_lines|
                     map('regex_replace', my_regex, replace_val)|
                     list }}"
    - debug:
        var: var2|to_nice_json

给出

  var2|to_nice_json: |-
    {
        "ARP replies sent": "6762",
        "ARP requests ignored": "0",
        "ARP requests received": "6762",
        "ARP requests sent": "404135"
    }

关于ansible - 如何使用ansible中的regex_replace转换此数据格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64595669/

相关文章:

ansible - 如何修复 "Could not match supplied host pattern, ignoring: bigip"错误,适用于 Ansible,而非 Tower

ansible - 如何从 Ansible playbook 获取文件?

linux - Ansible facter - CentOS - 不显示任何 facter_ 变量

Ansible 正在跳过调试行

Ansible:如何将变量添加到 "command"或 "shell"

ansible - 设置符号链接(symbolic link)错误 - Ansible

php - 无法找到软件包 php5-redis Ubuntu 14.04

ansible - 未从 list 文件中选取主机

ansible - 想要在远程主机上运行ansible任务

ansible - 使用 ansible playbook 执行 curl -X