sed コマンドでスラッシュ / を含む文字列を置換したくなった。 普通にやるなら、文字列中のスラッシュを \/ とエスケープしてやれば良い。 $ echo 'hoge/fuga' | sed 's/e\/f/E-And-F/' hogE-And-Fuga しかし、別の変数から値を拾って使用したりする時に、イチイチエスケープするのは面倒だ。 そこで調べてみると、sed コマンドの区切り文字はスラッシュ以外の記号でも動くことが分かった。スラッシュ以外の区切り文字を使用すれば、置換文字列中のスラッシュはエスケープが不要になる。 色々試したが、別にアルファベットを区切り文字にしていてもよくて、置換文字列内に登場しない1文字を使っていれば良いみたい。 # 区切り文字にアットマーク `@` を使う例 echo 'hoge/fuga' | sed s@e/f@E-And-F@ # 区切り文字に `X`
![sed でスラッシュを含む文字列を置換したい - Corredor](https://cdn-ak-scissors.b.st-hatena.com/image/square/4db6ecb18a0d1d767268cc558ab8de7e7373a883/height=288;version=1;width=512/https%3A%2F%2Fimages-fe.ssl-images-amazon.com%2Fimages%2FI%2F41i956UyusL._SL160_.jpg)