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

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

Software(Tips)シングルクォートのエスケープ

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 で元ファイルのバックアップ先を指定する必要はある)

最終更新日:

関連記事

人気記事

新着情報