ansible
  • ansible-playbook
  • ansible-2.x
  • 2017-01-01 83 views 2 likes 
    2

    我試圖替換文件中的一個字符串。例如:用Ansible替換文件中的單詞

    $PASSWORD="oldpassword" 
    

    有:

    $PASSWORD="newpassword" 
    

    這裏是Ansible的任務,應該這樣做:

    - name: change password with lineinfile 
        lineinfile: 
        dest: test.txt 
        regexp: '^$PASSWORD=' 
        line: '^$PASSWORD="newpassword"' 
        state: present 
        backrefs: yes 
    

    不幸的是,爲什麼它不工作我找不到理由。我無法用新字符串替換它。

    我也嘗試沒有backrefs和字符串被添加而不是替換。

    請指教。 謝謝。

    回答

    5

    Regular expression operations

    $:匹配輸入字符串的結尾,或只是在 字符串末尾的換行符之前的

    所以,逃避$用反斜槓。

    - lineinfile: 
         dest: /tmp/test.txt 
         regexp: '^\$PASSWORD=' 
         line: '$PASSWORD="newpassword"' 
         state: present 
    

    而且你不需要使用backrefs參數與你的榜樣,因爲你的正則表達式沒有反向引用。

    相關問題