0

多くのファイルで特定のテキストを見つけて置き換える必要があります。sedを使用して交換しようとしています。これが私がやろうとしていることです:

探す:

<font size="4" face="verdana, arial,geneva"><b>([^<]*)</b></font>

と置換する:

<font size="4" face="verdana, arial,geneva"><b><title>$1</title></b></font>

基本的に、見つけたものの周りにタグを追加したいと<title></title>思います。

たとえば、テキストが次のような場合:

<font size="4" face="verdana, arial,geneva"><b>THIS IS MY TITLE</b></font>

私はそれを次のものに置き換えたい:

<font size="4" face="verdana, arial,geneva"><b><title>THIS IS MY TITLE</title></b></font>

いろいろなコマンドを試しましたが、うまくいかないようです。これまでに試したコマンドは次のとおりです。

sed -e 's/<font size="4" face="verdana, arial,geneva"><b>\([^<]*\)<\/b><\/font>/<font size="4" face="verdana, arial,geneva"><b><title>\1<\/title><\/b><\/font>/g'
sed -r 's/<font size="4" face="verdana, arial,geneva"><b>([^<]*)<\/b><\/font>/<font size="4" face="verdana, arial,geneva"><b><title>\1<\/title><\/b><\/font>/g' 
sed -E 's/<font size="4" face="verdana, arial,geneva"><b>([^<]*)<\/b><\/font>/<font size="4" face="verdana, arial,geneva"><b><title>\1<\/title><\/b><\/font>/g'
4

2 に答える 2

0

私にとってこれはうまくいきます

sed  '/font *size *= *"4" *face/s|<b>\([^<]*\)</b>|<b><title>\1</title></b>|g'

私の考えは、できるだけ多くのエスケープを避け、マッチングと置換を 2 つのステップで中断することです。

于 2013-03-18T21:41:11.273 に答える
0

sed ラインは基本的にコピー & ペーストで構築されました ^_^. 試してみてください:

kent$ (master|✔) echo '<font size="4" face="verdana, arial,geneva"><b>THIS IS MY TITLE</b></font>'|sed -r 's@(<font size="4" face="verdana, arial,geneva"><b>)([^<]*)(</b></font>)@\1<title>\2</title>\3@'
<font size="4" face="verdana, arial,geneva"><b><title>THIS IS MY TITLE</title></b></font>
于 2013-03-18T21:36:13.027 に答える