sed

Last-modified: 2008-06-06 (金) 17:54:26
 

s を使った置換

最も単純な例

マッチしたパターンを置換する

寿司という文字にマッチしたら天丼に置き換える、という処理。

% echo 'I like sushi very much.' | sed 's/sushi/tendon/'

I like tendon very much.

%

s/.../.../ じゃなくて s_..._..._ とかでもいい

置換に使う区切り文字は / じゃなくてもいい。

% echo 'I like sushi very much.' | sed 's_sushi_tendon_'

I like tendon very much.

%

これは、置換対象の文字の中にスラッシュがある場合に役に立つ。

% echo '/usr/bin' | sed 's_usr_usr/local_'

/usr/local/bin

%

スラッシュを使ってしまうと、、、

% echo '/usr/bin' | sed 's/usr/usr/local/'

sed: -e 表現 #1, 文字数 11: 「s」へのオプションが未知です

%

となって、おかしいことになる。
置換の / を区切りの / が判別できないから当然である。
なので、極端な話、置換対象にない文字であれば何でもいい。

% echo 'I like sushi very much.' | sed 'sZsushiZtendonZ'

I like tendon very much.

%

は、Z を区切り文字にした例である。

マッチした部分は & に入る

どういうことか。
先ほどの例は「寿司」を「天丼」に置換するという、固定の変換だったが、必ずしも、そういう場合だけではない。