【发布时间】:2013-11-24 19:34:27
【问题描述】:
这一定很简单,但不知何故我不明白……我想通过 bash 脚本处理 HTML 文件并将 HTML-String 插入某个节点:
org.html:<div id="wrapper"></div>
MYTEXT=$(phantomjs capture.js www.somesite.com)
# MYTEXT will look something like this:
# <div id="test" style="top: -1.9%;">Something</div>
sed -i "s/\<div id=\"wrapper\"\>/\<div id=\"wrapper\"\>$MYTEXT/" org.html
我总是得到这个错误:bad flag in substitute command: 'd' 这可能是因为sed 也将$MYTEXT 的内容解释为一种模式——这不是我想要的……
顺便说一句:复制\<div id=\"wrapper\"\>可能也不需要?
【问题讨论】:
-
这是一个相关问题:stackoverflow.com/q/584894/951890
-
"
By the way: Duplicating \<div id=\"wrapper\"\> is probably also not necessary?": 是的,你可以使用\1的反向引用;您需要将\<div id=\"wrapper\"括在()中。但是,对于静态search string,这只是方便的问题,而不是要求。 -
好吧,我确实试过这个:
sed "s|(\<div id=\"wrapper\"\>)|\1$MYTEXT|" test.html但我得到了这个错误作为回报:\1 not defined in the RE -
没关系 - 我在使用
BSD sed的 Mac 上。\1必须替换为&:sed "s|(\<div id=\"wrapper\"\>)|&$MYTEXT|" test.html