注释行用Ansible匹配某些模式和n个字符串

时间:2019-05-22 08:38:34

标签: regex replace ansible comments

我需要注释与模式匹配的行,并在其后添加n行(如果该行的开头已经没有注释符号)。当我需要注释任何包含模式“ reboot”的行时,我会这样做:

    - name: Excluding reboot command from script
      replace:
        path: "{{some_path}}/someshellscript.sh"
        regexp: '(^(?!.*#).*reboot.*)'
        replace: '#\1'

此任务注释行带有'reboot'和regex的行将与'#reboot'不匹配。 但是,如果我需要在'reboot'后面加上两行,而又还没有注释的话,该怎么办呢?

1 个答案:

答案 0 :(得分:1)

只要您可以可靠地预测行的返回值,并且在正则表达式匹配后需要注释的行数不会有差异,则可以使用以下方法:

- name: Excluding reboot command from script
  replace:
    path: "{{some_path}}/someshellscript.sh"
    regexp: '(^(?!.*#).*reboot.*\n)(.*\n)(.*)'
    replace: '#\1#\2#\3'