[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:46206] Re: [Q] sed expression



下森です。

On Fri, 17 Mar 2006 17:18:38 +0900
Hiroki Kashiwazaki <reo@xxxxxxxxxxxxxxxxx> wrote:

> % BASEURI_PATTERN=`echo $BASEDIR | sed 's/\./\\\./g' | sed 's/\//\\\//g'`
> 
> のようにすると
> 
> sed: 1: "s/\//\\//g": bad flag in substitute command: '/'
> 
> と怒られます。`` 内ではなく、普通に
> 
> % echo $BASEDIR | sed 's/\./\\\./g' | sed 's/\//\\\//g'
> 
> とすると意図した処理が行われるのですが、``で括ると違う挙動になるようで
> す。しかも . → \. は怒られないのに / → \/ が怒られるのが分からない。
> これについてどなたかご教授頂ければ幸いです。

 ``の中のときは\をエスケープするために\\にするんじゃないですかね?

 % BASEURI_PATTERN=`echo $BASEDIR | sed 's/\\./\\\\\\./g' | sed 's/\\//\\\\\\//g'`

 しかしsedで/を置換するときはセパレータを/以外にしたほうが見やすそうな。
 sed 's#/#\\/#g'
 なのかな?深く考えてません。