我有以下的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'
答案 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>
将此文档替换为您的文件名。