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

Ansible正则表达式删除指定内容及清理YAML空行问题

解决Ansible中replace和lineinfile模块的配置问题

一、删除control_center_basic_users:至文件末尾的内容

你之前正则匹配失败,核心原因是没开启多行匹配模式——Ansible的replace模块默认是单行匹配,.不会匹配换行符。试试这个配置:

- name: Remove control_center_basic_users section to end of file
  ansible.builtin.replace:
    path: /path/to/your/target.yaml
    regexp: 'control_center_basic_users:.*'
    replace: ''
    flags: 's'
  • flags: 's':开启单行模式,让.匹配包括换行在内的所有字符,从而覆盖从目标行到文件末尾的全部内容。
  • 如果目标行带缩进(比如 control_center_basic_users:),把正则调整为'^\s*control_center_basic_users:.*'即可匹配缩进。

二、清理sasl_plain_users:后的空行

分两种场景处理:

场景1:sasl_plain_users:所在行末尾只有空白字符

用lineinfile配合反向引用保留关键字,去掉多余空白:

- name: Trim empty content on sasl_plain_users line
  ansible.builtin.lineinfile:
    path: /path/to/your/target.yaml
    regexp: '^(sasl_plain_users:)\s*$'
    line: '\1'
    backrefs: yes
  • regexp: '^(sasl_plain_users:)\s*$':匹配以sasl_plain_users:开头、后续全为空白字符的行。
  • backrefs: yes:启用反向引用,\1会保留正则捕获的sasl_plain_users:,替换后仅保留关键字本身。
  • 带缩进的话,把正则改成'^(\s*sasl_plain_users:)\s*$',line: '\1'即可保留原缩进。

场景2:sasl_plain_users:后面跟着独立空行

用replace模块匹配并移除后续空行:

- name: Remove blank lines after sasl_plain_users:
  ansible.builtin.replace:
    path: /path/to/your/target.yaml
    regexp: '(sasl_plain_users:)\n\s*\n'
    replace: '\1\n'

这个正则会匹配sasl_plain_users:后的空行(含缩进空白),替换后仅保留关键字和一个换行,去掉多余空行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:12:09