我需要在许多文件中查找并替换某些文本。我想用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>
标记。
e.g。如果文字如下:
<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'
答案 0 :(得分:0)
sed line基本上是从copy&amp; amp;粘贴^ _ ^。请试一试:
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>
答案 1 :(得分:0)
对我而言,这是有效的
sed '/font *size *= *"4" *face/s|<b>\([^<]*\)</b>|<b><title>\1</title></b>|g'
我的想法是避免尽可能多的逃避,并分两步打破匹配和替换