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

サラトガIT日記 > Software(Tips) > シングルクォートのエスケープ シングルクォートのエスケープ

※実経験の記憶を頼りに自宅の PC 環境(VMWareなど)で再現している内容もあるのでご注意下さい

2007-06-10

 

bash でシングルクォートをエスケープしようとしたら認識されない・・・。およよ。

(例)シングルクォートを削除する処理
[saratoga@HOSTNAME]$ sed -e 's/'//g' hoge.txt > hogehoge.txt

どうやら、' ではエスケープしてくれないようだ。ちなみに、下記の通りダブルクォーテーションで sed の引数を囲んでやるとうまくいく。

[saratoga@HOSTNAME]$ sed -e "s/'//g" hoge.txt > hogehoge.txt

perl版だと
[saratoga@HOSTNAME]$ perl -i.bak -ne "s/'//g;print;" hoge.txt

ってことで、純粋にエスケープの問題。調べた結果、エスケープは ''' のように、さらにシングルで囲まないといけない。

[saratoga@HOSTNAME]$ sed -e 's/'''//g' hoge.txt > hogehoge.txt
[saratoga@HOSTNAME]$ perl -i.bak -ne 's/'''//g;print;' hoge.txt

perlで置換すれば元ファイルをそのまま利用できるので、sed より perl で処理した方が都合いい場合もある。
(-i で元ファイルのバックアップ先を指定する必要はある)

関連記事

上記の記事に関連する記事(最新の10件)です。