如何使用Ansible注释掉特定行

时间:2018-12-04 21:35:57

标签: regex ansible

作为解决方法,我现在必须从配置文件中注释掉一行 clear_me 。示例文件如下所示。我不想在def clear_me之前添加评论

memset

当我这样做时:

def clear_me
    FactValue.where("user_id = #{id}").delete_all
  end

  def clear_userdata
    return unless .....  
    clear_me
    clear_reports
  end

我看到进行了两次替换,即在我的def也被注释掉之前的clear_me。我想念什么? :

- name: Comment out 
  replace:
          path: <>
          regexp: 'clear_me'
          replace: '#clear_me'
          backup: yes

我只需要注释掉独立的字符串clear_me,而不注释def中的一个字符串

1 个答案:

答案 0 :(得分:1)

问题中的正则表达式模式将匹配文件中任意数量的单词clear_me。将正则表达式模式更改为以下内容,只会更改您实际打算的行。

regex模式表示匹配任意行开头且具有clear_me的行

regex='^ +clear_me$'

或者,您也可以使用下面的正则表达式替换

regexp='^( +clear_me$)'
replace='#\1'