我必须将文本块插入多个(> 200)html文件中。我决定使用bash来解决这个问题。
必须插入的文本块是多线人:
textblockvar='
<body class="article toc2 toc-right">
<div id="readspeaker-button1" class="rs_skip rsbtn rs_preserve">
<a rel="nofollow" class="rsbtn_play" accesskey="L" title="Read
out with ReadSpeaker" href="//app-eu.readspeaker.com/cgi-bin
/rsent?customerid=5&lang=nl_nl&voice=Ilse&re$
<span class="rsbtn_left rsimg rspart"><span
class="rsbtn_text"><span>Lees voor</span></span></span>
<span class="rsbtn_right rsimg rsplay rspart"></span>
</a>
</div>
'
textblockvar
将替换所有200多个html文件中似乎一致的<body class="article toc2 toc-right">
标记。
我尝试了各种技术来执行替换:
FILES=leerstof/*/*.html
for f in $FILES
do
sed -e "s|'<body class="article toc2 toc-right"'|${textblockvar}|g" $f
done
然而,脚本总是会出现致命的错误:&#34;未终止的`s&#39;命令&#34;
我试图交换引号,尝试没有引号,但错误仍然存在。
也许我的解决方案不是最好的选择。有没有可用的解决方法?
答案 0 :(得分:0)
这是一种可行的方式:
sed
引用您的'
命令,而不是"
。\n
替换字符串变量中的换行符。...id=5\&lang=nl_nl\&voice=Ilse\&re...
sed -i
更改文件。如,
textblockvar='<body class="article toc2 toc-right">\n<div id...'
...
sed -i 's|<body class="article toc2 toc-right"|'$textblockvar'|g' $f
注意:首先在没有-i
的情况下测试它,只输出它会做什么,并检查它是否按预期工作。如果是,则使用-i
实际更改文件。