プロが教えるわが家の防犯対策術!

sedコマンドで、「$」、「空白」、「"」を含む文字を置換がしたいのですが、
うまく行きません ><
詳しい方いましたら教えてください m(_ _)m


******************************
置き換え対象の文字列(スペース含む)
******************************
$SUBJECT_TAG_TYPE = "[:]";


***********************
こんな風に置き換えたい
***********************
$SUBJECT_TAG_TYPE = "";


***********************
打ってみたコマンド
***********************
sed -i -e 's/$SUBJECT_TAG_TYPE = "[:]";/$SUBJECT_TAG_TYPE = "";/' ./test.txt

A 回答 (1件)

鍵括弧[] と、ドル記号$ は、


sed の コマンド s/// にて特別な意味を持つ記号です。

なので、エスケープして使いましょう
sed -e 's/\$SUBJECT_TAG_TYPE = "\[:\]";/\$SUBJECT_TAG_TYPE = "";/'

空白と二重引用符には、
特別な意味は無いのでそのままでよいのですが、
エスケープしてもしなくても意味は同じになるので、
怪しいと思った記号は全てエスケープするとよいでしょう。

少々見づらくなる欠点もありますが
sed -e 's/\$SUBJECT_TAG_TYPE\ \=\ \"\[\:\]\"\;/\$SUBJECT_TAG_TYPE\ \=\ \"\"\;/'
    • good
    • 4
この回答へのお礼

ありがとうございます!

スペースも含めて、エスケープを行ったところ、無事置換できました
ヽ(=´▽`=)ノ

置換出来ず、困っていたので大変たすかりました。

今後うまくいかない際は、まず記号が特殊な意味がないかを確認し、
あやしいげなヤツは全部エスケープしたいと思います!!

お礼日時:2015/05/29 14:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています