ansible - 如何在ansible中使用regex_replace转换这种数据格式
问题描述
- 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"
}
推荐阅读
- c# - 从 select2 多选中获取值并将它们写入模型属性
- google-apps-script - 替换谷歌电子表格中的西里尔字符
- python - Airflow - 如果脚本中未定义函数,则动态 Dag 创建失败
- sql-server - EF Core 不断抱怨不存在的索引
- jasper-reports - JasperReport Master-Detail 报表和子报表
- amazon-web-services - 在 Amazon EKS 上部署融合服务
- reactjs - 在 react.js、jest、酶中模拟一个简单的函数
- javascript - 可以在数组中操作JS函数吗?
- java - IntelliJ 2020.2 的 Maven 问题
- matlab - 字符显示为“y”而不是空格“