sedコマンドで正規表現を利用する際に忘れてはならないこと
sedコマンドを利用して、文字列置換を行うことができるのは皆さんご存知のとおりです。
私もよく以下のようなコマンドを実行し、filename.txtの中の文字列である (replacement) を hostname に置き換えています。
$ sed -i s/(replacement)/hostname/g filename.txt
これでほとんどの場合は解決するのですが、正規表現を使用する時は注意が必要です。
どのようなことに注意しなければならないかというと、
「 s/置換対象文字列/置換文字列/g 」のかたまりを「 's/対象文字列/置換文字列/g' 」
という風にシングルクォート(')もしくはダブルクォート(")で囲む必要がある点です。
私は、これに気づかずに数十分悩むこととなりました。。。
ちなみにシングルクォートとダブルクォートの使い分けは、クォート内部でシェル変数などを利用する's/対象文字列/置換文字列/g'かどうかで、シェル変数を使う場合にダブルクォートを利用しましょう。
正常に実行できるかどうかはわかりせんが、以下のような感じ。