chefでsedコマンドなどを実行するときのエスケープ処理

chefでsedコマンドなどを実行するとき、対象の文字列にエスケープ処理が必要な場合があります。
具体的には、 \ 、 [ 、 ] 、 | などです。
コマンドラインでこれらをエスケープするときは通常 \\ 、 \[ などのように “\” を頭につけますが、
chefで実行する場合は頭につける “\” にもエスケープ処理を行わなければならないようです。

例えば、[ ] のエスケープは以下のようになります。

execute "action" do
  command <<-EOH
    sed -i "s/\\[\\]/sample/g" test.txt
  EOH
end