通过shell脚本更改<p> html </p>

时间:2012-06-11 09:06:13

标签: linux bash shell

我有以下的html,我想基于shell脚本中的var更改<p> Text </p>部分的更改。

<div id="demo"><p> Text </p></div>

我一直在尝试使用以下功能,但它似乎不起作用,我需要它来接收<p> Text </p>部分中的任何内容,因为它会定期更改

fnChangeTxt()
{
        sed -i 's/<div id="'$1'"><p>*.*</<div id="'$1'"><p>'$2'</' /var/www/html/alarm.html
}

调用函数

fnChangeTxt 'demo' 'Next'

3 个答案:

答案 0 :(得分:1)

您需要更改报价。为了便于阅读,我建议为s命令使用不同的分隔符 - 一个不太可能出现在您正在修改的文本中的分隔符。这将使读者不太可能因为在使用HTML的东西中看到奇怪的地方的斜线而感到困惑。

fnChangeTxt() 
{
     sed -i "s|<div id=\"$1\"><p>.*<|<div id=\"$1\"><p>$2<|" /var/www/html/alarm.html;
}

答案 1 :(得分:0)

对于初学者来说,单引号将阻止用提供的输入替换变量。

其次,您只需要.*来匹配&#34;所有内容&#34;。 (通常&#34; 0更多出现任何角色&#34;)

答案 2 :(得分:0)

真的不需要sed

#!/bin/bash

new='some stuff'

while read
do
    echo ${REPLY/<p>*<\/p>/<p> $new </p>}

done << '__END__'
<div id="demo"><p> Text </p></div> 
<div id="demo"><p> Text </p></div> 
__END__

给出:

<div id="demo"><p> some stuff </p></div>
<div id="demo"><p> some stuff </p></div>

将此文档替换为您的文件名。