ansible - 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 方法来执行此操作?
解决方案
你为什么不使用:
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
推荐阅读
- python - 为什么我的 PyInstaller 生成的 .exe 无法启动?
- python-3.x - 在odoo数据模板中调用qweb模板
- c# - .net core docker如何使用httpclient在代码中访问pfx证书?尝试从需要证书的容器访问外部 api
- azure-synapse - 添加范围值以包括 Azure 突触分析中的现有表分区
- javascript - 为以另一个函数作为参数的函数添加 JSDoc 注释
- javascript - JavaScript 删除
- 已经存在
- python - 如何在我的子类中重新定义 append 方法?
- typescript - 类中的 TypeScript 类型保护
- spring - 在 Eclipse 上工作的 PowerMockRunner 测试在 STS 上因 java.lang.reflect.InvocationTargetException 而失败
- intellij-idea - JavaFX 应用程序无法使用 intellij ide 创建的本机 exe 包启动