Ansible 替换 Windows 文本文件中的所有匹配项 - win_lineinfile

标签 ansible

win_lineinfile,根据 Ansible 文档

... the pattern to replace if found; only the last line found will be replaced

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

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

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

是否有更好的 native Ansible 方法可以在 Windows 中执行此操作?

最佳答案

你为什么不使用:

  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

关于Ansible 替换 Windows 文本文件中的所有匹配项 - win_lineinfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58457590/

相关文章:

linux - 如何使用 ansible 运行需要中断操作的 shell 文件

variables - 角色默认变量中的 Ansible 递归循环

docker - 使用 ansible 管理 docker 容器 - 最佳实践

shell - Ansible:shell脚本输出始终为空

mysql - 由于 'Sending passwords in plain text without SSL/TLS is extremely insecure.',ansible mysql 复制无法将 master 更改为

ansible - 将 Ansible 保险库用于 Ansible ssh key 文件

Ansible with_subelements

ansible - 错误!操作中的意外参数类型 : <class 'ansible.parsing.yaml.objects.AnsibleSequence' >

ansible - 在 Ansible 中生成证书链

Ansible concat vars 到字符串