You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible如何将文件中匹配正则的字符串转换为小写

Ansible 字符串转小写及INI配置项转换实现方案

一、文件内字符串转小写(支持全量/指定正则匹配部分)

1. 全量转换文件所有内容

直接通过replace模块匹配全文,调用jinja2的lower过滤器转换即可,playbook示例:

---
- name: 全量转换文件内容为小写
  hosts: your_host
  tasks:
    - name: 转换指定文件全量内容为小写
      ansible.builtin.replace:
        path: /path/to/your/file
        regexp: '^(.*)$'
        replace: '{{ "\g<1>" | lower }}'

2. 仅转换正则匹配的部分内容

修改regexp参数匹配你需要转换的内容片段,用分组捕获要转小写的部分即可,比如仅转换所有以大写字母开头的单词为小写,示例:

---
- name: 仅转换正则匹配部分为小写
  hosts: your_host
  tasks:
    - name: 转换所有匹配大写开头单词的内容为小写
      ansible.builtin.replace:
        path: /path/to/your/file
        regexp: '(\b[A-Z][A-Za-z0-9_]*\b)'
        replace: '{{ "\g<1>" | lower }}'

你可以自行修改regexp参数的正则规则,匹配你需要转换的特定内容。

二、INI配置文件驼峰配置项转小写(保留配置值不变)

核心逻辑是通过正则精准匹配INI配置的键(排除注释行、section行),仅对键的部分做小写转换,配置值完全保留,playbook示例:

---
- name: INI配置项驼峰转小写
  hosts: your_host
  tasks:
    - name: 转换INI配置的驼峰键为小写,保留值不变
      ansible.builtin.replace:
        path: /path/to/your/config.ini
        # 正则说明:排除以#/;开头的注释行、[]包裹的section行,捕获缩进、配置键、键值对后半部分三个分组
        regexp: '^(\s*)(?!#|;|\[)([a-zA-Z0-9_]+)(\s*=.*)$'
        replace: '\1{{ "\g<2>" | lower }}\3'
  • 正则匹配说明:负向先行断言(?!#|;|\[)确保不会修改注释、section内容,第二个分组捕获的是驼峰格式的配置键,仅对该部分执行小写转换,第三个分组的等于号和配置值完全保留不修改。

内容的提问来源于stack exchange,提问作者Leshawn Rice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:39:03