馬とテニスのIT革命
馬とテニスとリラックマが好きな IT 系のエンジニアです。
Linux

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

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

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

$ vi hoge.txt

aaa'bbb

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

$ sed -e 's/'//g' hoge.txt

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

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

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

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

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

これは想定通り。

$ sed -e "s/'//g" hoge.txt

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

$ perl -i.bak -ne "s/'//g;print;" hoge.txt

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

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

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

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

$ sed -e 's/'\''//g' hoge.txt
Web API The Good Parts

オライリーの「Web API」に特化した本です。最近の多くの Web サービスは API が活用されていますが、その技術はこれまでの Web サイトとそれほど大きく変わりません。

今後、マイクロサービス化が進む中で知っておいて損はない内容が詰め込まれており、現場のエンジニアやこれから Web 系のエンジニアを目指す人にもオススメの一冊です。

created by Rinker
¥2,376
(2018/10/19 13:59:11時点 Amazon調べ-詳細)

あなたにオススメ