我正在尝试使用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'
但该任务似乎不起作用。事实上,该任务对源文件没有任何作用。
如果我删除了任务的最后一行(之前:' ###块结束' )。线条确实被删除,但它也删除所有空行,直到EOF不是我想要的。以下是删除最后一行的结果:
###This line has blank lines after it###End of block
#More lines
这是不期望的。
我有一个使用sed的解决方案,但我希望尽可能保持其幂等性。也许我需要更好的正则表达式?
有什么想法吗?
感谢。
答案 0 :(得分:1)
根据这个问题:https://github.com/ansible/ansible/issues/31354使用after和before参数一起当前不能按预期工作。
您可以从任务中删除之后 paremeter,在这种情况下,它会按预期工作,但我知道这不是您想要实现的目标。
答案 1 :(得分:1)
在玩了这个以及再玩正则表达式之后,我想出了这个:
- 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
我追求的是什么。但是我会等到错误修复后再用于生产。