sedのデリミタは/でなくてもよかった
あるシェルスクリプト hage.sh
に含まれるテンプレート文字列 {#TEMPLATE#}
を、環境変数で注入するファイルパスに置換したい事例があって、sedで置換しようとしたけどうまくいかなかった。パスの /
とsedのデリミタの /
が競合してしまってたのが原因。
env PATH_FOO=/foo/bar/baz cat hage.sh | sed -e s/{#TEMPLATE#}/${PATH_FOO}/g
リファレンス読んだらデリミタは /
でなくともよかった。(リファレンスはちゃんと読もうな!!!)
This also matches the regular expression regexp, but allows one to use a different delimiter than /. This is particularly useful if the regexp itself contains a lot of slashes, since it avoids the tedious escaping of every /. If regexp itself includes any delimiter characters, each must be escaped by a backslash (\).
シェルりょく が 1 あがった!