[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:46226] Re: [Q] sed expression
せきねなのです。
From: SHITAMORI Akira <shitamo@xxxxxxxxxxxxxx>
Date: Fri, 17 Mar 2006 19:16:47 +0900
> > % 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'`
ですね。POSIX な shell で `` より $() を奨める個人的な理由がこれです。
% BASEURI_PATTERN=`echo $BASEDIR | sed 's/\./\\\./g' | sed 's/\//\\\//g'`
は `` を $() に以下のように変えれば意図した通りに動きます。
% BASEURI_PATTERN=$(echo $BASEDIR | sed 's/\./\\\./g' | sed 's/\//\\\//g')
--
SEKINE Tatsuo:
tsekine@xxxxxxxxxx System Design & Research Inst. Co.,Ltd.
http://www.amazon.co.jp/exec/obidos/ASIN/4797326522