お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2013-01-03 11:57:59

futatsuya710
メンバ
登録日: 2012-08-27

sedで/付きの文字列を置換したいです。

HTMLファイルでルビをふるのに、<RUBY>タグを用いずに、
<SMALL>(ルビ)</SMALL>
と記載する事にしました。

まず(を<SMALL>(に置換するのに、
sed -e "s/(/(<SMALL>/g" ファイル名.html
で成功したのですが、次に)を)</SMALL>に変換するのに、
</SMALL>の/をどう処理してよいのか分かりません。

アドバイスをいただけると助かります。
よろしくお願い致します。

オフライン

 

#2 2013-01-03 12:08:06

futatsuya710
メンバ
登録日: 2012-08-27

Re: sedで/付きの文字列を置換したいです。

質問の追加です。

sed -e "s/(/(<SMALL>/g" ファイル名.html > ファイル名.html
では、変換内容が保存されません。
保存の方法も教えていただきたいと思います。
基本的な事かもしれませんが、よろしくお願いします。

オフライン

 

#3 2013-01-03 12:12:50

futatsuya710
メンバ
登録日: 2012-08-27

Re: sedで/付きの文字列を置換したいです。

変換の保存方法ですが、
sed -e "s/(/(<SMALL>/g" ファイル名1.html > ファイル名2.html
で解決しました。
お騒がせしました。

オフライン

 

#4 2013-01-03 13:44:56

ry
メンバ
登録日: 2008-07-30

Re: sedで/付きの文字列を置換したいです。

sed の 置換コマンドは s の直後の文字を区切り文字としているだけなので、必ずしも / を使わなくてはならないことはありません
たとえば echo "a/b/c" | sed -e "s#/#=#" とすれば a=b=c という結果が得られます
これは置換コマンドの s の直後にある # が区切り文字になり、/ を = に置換するという意味になります

また、特殊な意味を持っている文字の前に \ (表示フォントによって、円マークかバック スラッシュ) をつけることでその意味を無効にすることもできます
たとえば echo "a/b/c" | sed -e "s/\//=/" とすれば a=b=c  という結果が得られます
これは区切り文字という特別な意味を持つ / の前に \ をつけてその意味を無効にしています

オフライン

 

#5 2013-01-03 14:35:59

futatsuya710
メンバ
登録日: 2012-08-27

Re: sedで/付きの文字列を置換したいです。

ry様、アドバイスありがとうございます。
sed -e "s#)#)</SMALL>#g" ファイル名1.html > ファイル名2.html
で、置換に成功しました。
echoからデータを渡す方法や、\の無効化も示していただき、勉強に成りました。

オフライン

 

Board footer

Powered by FluxBB