幸福なプログラマ

プログラマは幸福になれる。

sed -eによるパターン置換でエラーが出た時の対処法

sedで置換する際、以下のようなエラーが出た場合の対処法

sed: 1: "s/hogehoge...": bad flag in substitute command: '/'`

-eオプションでパターンによる置換を行う際、区切り文字と同じ文字が置換対象の文字列に含まれている場合発生する。

  • エラーが出る例(区切り文字 / と同じ文字が置換対象の文字列に含まれる)

    • sed -e "s/hogehoge/http://localhost/g
  • 区切り文字を変更することで解決する(下記の例では | に変更している)

    • sed -e "s|hogehoge|http://localhost|g

余談

-eオプション でパターンを指定する際、 セミコロン ';' で区切ることで1行に複数記述できる

sed -e "s/hogehoge/test/g;s/fugafuga/sample/g