シングルクォートのエスケープ
※実経験の記憶を頼りに自宅の 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件)です。


