我正在尝试使用 Ansible 删除两行之间的空白行,但无法使其工作。我的源文件如下所示:
###This line has blank lines after it
###End of block
#More lines
我希望结果如下所示:
###This line has blank lines after it
###End of block
#More lines
到目前为止,我使用替换模块完成了此任务:
- name: Remove blank lines between matches
replace:
path: /home/vagrant/abcd
after: '###This line has blank lines after it'
regexp: '(^\n)'
replace: ''
before: '###End of block'
但该任务似乎不起作用。事实上,该任务不会对源文件执行任何操作。
如果我删除任务的最后一行(之前:'###End of block')。这些行确实被删除,但它也删除了所有空白行,直到 EOF,这不是我想要的。这是删除最后一行后的结果:
###This line has blank lines after it###End of block
#More lines
这不是预期的。
我有一个使用 sed 的解决方案,但我想尽可能保持它的幂等性。也许我需要更好的正则表达式?
请问有什么想法吗?
谢谢。
最佳答案
经过更多的尝试并使用正则表达式后,我想出了这个:
- name: Remove blank lines between matches
replace:
path: /home/vagrant/abcd
after: '###This line has blank lines after it'
regexp: '(^\s*$)'
replace: ''
这会产生:
###This line has blank lines after it
###End of block
#More lines
这就是我所追求的。但我会等到 bug 修复后再在生产中使用。
关于ansible - 如何删除 Ansible 中匹配项之间的空白行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47910129/