chefでsedコマンドなどを実行するとき、対象の文字列にエスケープ処理が必要な場合があります。
具体的には、 \ 、 [ 、 ] 、 | などです。
コマンドラインでこれらをエスケープするときは通常 \\ 、 \[ などのように “\” を頭につけますが、
chefで実行する場合は頭につける “\” にもエスケープ処理を行わなければならないようです。
例えば、[ ] のエスケープは以下のようになります。
execute "action" do command <<-EOH sed -i "s/\\[\\]/sample/g" test.txt EOH end