sed - 将文本添加到变量

时间:2013-09-01 10:09:34

标签: bash sed append

我有像这样的HTML代码

<a href="/site/index.php/Something" title="Something">Something cool</a>, <a href="/site/index.php/Nice_Text" title="Nice Text">Nice Text</a>
some text
<a href="/site/index.php/Apple%27s_text" title="Apple's text">Apple's text</a>

我需要添加点(开头)和.html(结束)链接才能得到这个:

<a href="./site/index.php/Something.html" title="Something">Something cool</a>, <a href="./site/index.php/Nice_Text.html" title="Nice Text">Nice Text</a>
some text
<a href="./site/index.php/Apple%27s_text.html" title="Apple's text">Apple's text</a>

我正在玩sed,但我不知道,如何使用更改的网址。 就像是 查找"/site/index.php/并首次出现",然后"放置.html(或之间的变量)。

谢谢。

2 个答案:

答案 0 :(得分:1)

sed 's/<a \+href="\([^\"]*\)"/<a href=".\1.html"/g' my_file.html

这会查找看起来像<a href="xxx"的任何内容,并将xxx替换为.xxx.html。它允许ahref之间的多个空格。要查找xxx,它会查找不包含"的{​​{1}}之间的任何字符串。这假定您的原始文件包含前面的",示例显示,并且/全部位于文件的同一行(不在<a href="xxx"a之间例)。 href选项会确保它在一行中处理多个g

答案 1 :(得分:0)

使用awk

awk '{gsub(/href="/,"&.");gsub(/" title/,".html&")}1' file