![如何使用 ansible 从一行中删除特定字符串](https://linux22.com/image/772539/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20ansible%20%E4%BB%8E%E4%B8%80%E8%A1%8C%E4%B8%AD%E5%88%A0%E9%99%A4%E7%89%B9%E5%AE%9A%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
我在 /etc/yum.conf 中的 yum 排除列表中添加了一些软件包,我想从排除列表中删除特定的软件包
例子:
排除=java* 排除=内核* java* 排除=java* 内核* 排除=内核* abc* java* def*
我尝试添加#,但这没有达到目的,并且为所有排除语句添加了注释。
- name: Comment Java exclusion
replace:
path: /etc/yum.conf
regexp: '(.*java*)'
replace: '#\1'
增加了更多案例场景。
答案1
将其替换为空字符串。
- name: Comment Java exclusion
replace:
path: /etc/yum.conf
regexp: '(java\*\s*)'
replace: ''
对正则表达式的更改:
.*
也会删除exclude=
,所以我删除了它- 需要
*
转义,它是一个正则表达式修饰符 - 添加
\s*
以删除尾随空格
编辑
甚至更好:
- name: Comment Java exclusion
replace:
path: ~/ansible/test.blah
regexp: '^(exclude=.*)java\*\s*'
replace: '\1'
这确保只有以 开头的行exclude=
会受到影响,并且即使java*
不是列表中的第一个项目也能正常工作。