2017-12-20 105 views
2

私は2行の間の空白行を削除するためにAnabilitiesを使用していますが、それを動作させることはできません。私のソースファイルは、次のようになります。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を使用して解決策を持っていますが、私は可能な限りそのように冪等を保たせたいと思います。たぶん、私はより良い正規表現が必要ですか?

どのようなアイデアをお願いしますか?

ありがとうございました。

答えて

1

この問題によれば、https://github.com/ansible/ansible/issues/31354とafterとbeforeパラメータを併用すると、現在期待どおりに動作しません。

の作業後にを削除することができます。この場合、期待通りに動作しますが、達成したいことではないことがわかります。

+0

リンクありがとうございます。私はそれが固定され、当面はsedを使用するまで待たなければならないと思う。 – solaris

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 

を私がした後だったものはどれ。しかし、私はバグが修正されるまでプロダクションで使用するまで待つでしょう。

関連する問題