Linux

sed でシングルクォートをエスケープする

sed でシングルクォートをエスケープしようとしたら構文として認識されない。

例えば以下の文字列が書かれたファイルがあったとする。

ここで以下のコマンドを実行すると、コマンドが成立していない状態となる。

どうやら、’ ではエスケープしてくれないようだ。

というよりも、囲んでいる文字の問題。

ここでは sed でシングルクォートを置換する方法を紹介します。

シングルクォートのエスケープ

ちなみに、下記の通りダブルクォーテーションで sed の引数を囲んでやるとうまくいく。

これは想定通り。

同じことを perl でおこうなうと以下の通り。

ってことで、純粋にエスケープの問題。

シングルクォートを使ってシングルクォートのエスケープ

置換対象のシングルクォートをエスケープしてシングルクォート囲えばば、両サイドをシングルクォートで囲んでも問題ない。

ちょっとややこしいですが・・・。