Ansible:移除列表数组中channelId键的双引号
解决方法
要把当前Ansible输出转换成你要的格式,用Shell命令就能直接搞定,分两步处理:提取目标数组、移除键名的双引号。
命令示例
假设当前输出内容保存在output.txt文件中,执行以下命令:
sed -n '/"msg": \[/,/\]/p' output.txt | sed -e 's/"channelId":/channelId:/g' -e 's/"msg": \[/\[/'
命令说明
- 第一个
sed命令:精准提取从"msg": [开始到数组结尾]的所有内容,自动过滤掉开头的TASK日志和主机标识行 - 第二个
sed包含两个替换操作:- 全局替换
"channelId":为channelId:,直接移除键名两侧的双引号 - 把数组开头的
"msg": [替换成[,对齐期望的数组格式
- 全局替换
执行后就能得到你想要的结果:
[ { channelId: "f35ead0f-8252-4975-9055-5d050161da01" }, { channelId: "06f3466f-f894-4555-8ba6-7283e219b8e8" }, { channelId: "de26fe02-a688-40fb-b580-46902c240e32" } ]
如果是想在Ansible任务里直接生成这种格式的输出,也可以通过调整debug模块的参数,结合json_query和字符串替换过滤器实现,但用Shell处理现有输出是最直接快捷的方式。
内容的提问来源于stack exchange,提问作者Mar_Che
相关产品推荐
相关产品推荐

