带有特殊字符的SED字符串除以通配符

时间:2018-06-11 09:17:59

标签: bash sed

有sed问题。我喜欢这个

sed -i '' 's#\<script src\=\"http\:\/\/widget\.blah\.com\/js\/sis_some_widget.*.class\=\"sis\-some\-widget\"\>\<\/div\>#newblah.com#g' lol.sql . 

这应该用代码的两个部分之间的通配符替换整个脚本代码。问题是,通配符的部分对于每个脚本代码(在许多wordpress页面上)是不同的。唯一常见的部分是<script src="http://widget.blah.com/js/sis_some_widget.js?class="sis-some-widget"></div>

帮我弄清楚为什么这个sed不起作用,我怎么想用通配符和许多特殊字符来sed字符串。

代码看起来像

<script src="http://widget.blah.com/js/sis_some_widget.js?MANY MANY SPECIAL CHARACTERS and letters class="sis-some-widget"></div>

1 个答案:

答案 0 :(得分:0)

您将在不需要反斜杠的地方添加反斜杠。如果您使用“#”作为分隔符,则唯一需要转义的字符就是域名中的点。

'\ <','\ =','-'等不是有效的字符转义符,因此sed将这些反斜杠解释为文字字符。

您的表情应该是:

's#<script src="http://widget\.blah\.com/js/sis_some_widget.*class="sis-some-widget"></div>#newblah.com#g'