我有一个包含此<!-- CordovaVersion -->
的文件
我想用<script src="cordova-1.7.0.js" type="text/javascript"></script>
我试过
sed 's/"<!-- CordovaVersion -->"/"<script src="cordova-1.7.0.js" type="text/javascript"></script>"/g' junk4 > junk4_modified
但它似乎不起作用。有什么帮助吗?
答案 0 :(得分:4)
使用#之类的其他字符作为分隔符,而不是 / 。
sed 's#<!-- CordovaVersion -->#<script src="cordova-1.7.0.js" type="text/javascript"></script>#g' junk4 > junk4_modified
答案 1 :(得分:2)
首先,LiKao表示,您不需要额外的"
。其次,你需要知道sed如何理解什么被替换为:
s/this/that/flags
这意味着将this
替换为that
并添加其他标记(例如g
表示无处不在)。实际上/
不是特殊字符,您可以使用#
之类的任何其他字符作为scai说:
s#this#that#flags
但是问题是什么?想象一下,您想要将this
替换为th/at
。然后sed看到了这个:
s/this/th/at/flags
并且对此感到困惑。您是否尝试将this
替换为th
?比at/flags
意味着什么?您是否尝试将this/th
替换为at
?或this
与th/at
一起使用?没有办法说出来。
这就是你应该使用\
转义特殊字符的原因。由于我们使用/
作为分隔符,因此当它不是分隔符时我们必须将其转义:
sed 's/<!-- CordovaVersion -->/<script src="cordova-1.7.0.js" type="text\/javascript"><\/script>/g' junk4 > junk4_modified
(当然,如果我们使用#并且this
或that
内部有#
您应该已经转义#
)
您可以阅读here了解有关sed的更多信息,包括其特殊字符。
答案 2 :(得分:1)
sed 's/<!--\s*CordovaVersion\s*-->/<script src="cordova-1.7.0.js" type="text\/javascript"><\/script>/g' junk4 > junk4_modified
答案 3 :(得分:1)
使用此行,sed将搜索"<!-- CordovaVersion -->"
并尝试将其替换为<script src="cordova-1.7.0.js" type="text/javascript"></script>"
。但您的原始文档不包含"
。只需从sed命令中删除它们即可。