首页 > 解决方案 > 使用 Ansible 擦除除一行之外的所有行

问题描述

所以我正在使用 Ansible 剧本,我的想法是从调试变量中删除所有行,但保留一个。例如,

- name: Debug
  debug:
    var: json_response

让我们考虑一下 json_response 有 100 多行。我想找到我的具体词并保持线路。像这样:

保持在您找到单词的位置:“疯狂”

输出.json:

我正在做这个测试

所以大家可以理解

我在说什么

我是一个疯狂的测试

结果 output.json 将是:

我是一个疯狂的测试

现在,我查看了 ansible 的“lineinfile”模块,它说:“这个模块确保特定行在文件中,或者使用反向引用的正则表达式替换现有行”

但这似乎不能满足我的需求,有什么想法吗?

谢谢

标签: ansible

解决方案


如果json_response是合适的json数据,可以使用json_query过滤器搜索关键字:https ://docs.ansible.com/ansible/2.7/user_guide/playbooks_filters.html#json-query-filter

否则,如果它是一个普通的多行字符串,则可以使用regex_search过滤器:https ://docs.ansible.com/ansible/2.7/user_guide/playbooks_filters.html#regular-expression-filters


推荐阅读