首页 > 解决方案 > Ansible替换Windows文本文件中的所有出现 - win_lineinfile

问题描述

win_lineinfile,根据 Ansible 文档

...如果找到要替换的模式;只有找到的最后一行将被替换

有时您要做的就是用另一个字符串替换所有行中的字符串的所有实例

- name: replace thin with oci in environment.properties
  win_shell: |
    (Get-Content "{{file_name}}").replace(':thin:',':oci:') | Set-Content -Path "{{file_name}}" -Encoding Ascii

是的,在许多情况下,模板是更好的选择

在 Windows 中是否有更好的原生 Ansible 方法来执行此操作?

标签: ansible

解决方案


你为什么不使用:

  win_lineinfile:
      path: 'your/path/to/file.ext'
      # Line to Search/Match against
      regexp: '{{item.From}}'
      # Line to Replace with
      line: '{{item.To}}'
      backrefs: yes

backrefs 选项允许您在整个文件中进行搜索。更多信息在这里https://docs.ansible.com/ansible/2.3/win_lineinfile_module.html


推荐阅读