2017-01-01 15 views
2

ファイル内の1つの文字列を置き換えようとしました。たとえば、次のようにしてファイル内の単語をAnitoryに置き換える

$PASSWORD="oldpassword" 

:ここ

$PASSWORD="newpassword" 

はこれを行う必要がありAnsibleの作業です:

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

残念ながら、私はそれが動作していない理由を見つけることができません。私は新しい文字列で置き換えることはできません。

私もbackrefsなしで試していましたが、置き換えられる代わりに文字列が追加されました。

お知らせください。 ありがとうございます。 Regular expression operationsから

答えて

5

$:文字列の末尾にマッチするか、単に 文字列の末尾の改行の前に

だから、バックスラッシュと $を逃れます。あなたの正規表現は、後方参照を持っていないため

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

また、あなたは、あなたの例でbackrefsパラメータを使用する必要はありません。

関連する問題