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 を区切り文字にした例である。
マッチした部分は & に入る
どういうことか。
先ほどの例は「寿司」を「天丼」に置換するという、固定の変換だったが、必ずしも、そういう場合だけではない。